/// <summary> /// Débute la game. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnStart_Click(object sender, RoutedEventArgs e) { try { using (var svcClient = new GameServiceClient()) { GameView gView = new GameView(); UserSessionSingleton.Instance.CurrentGameToken = svcClient.CreateGame( UserSessionSingleton.Instance.UserToken.Value, (Guid)tabCurrentRoom.DataContext); gView.Closed += ShowLobby; gView.GameToken = UserSessionSingleton.Instance.CurrentGameToken.Value; gView.IsGameMaster = true; gView.Show(); _changedRoom = false; _joinedGame = true; Hide(); } } catch { MessageBox.Show("Un problème s'est produit pour débuter la partie :^("); } }
/// <summary> /// Override le onClosing pour permettre de confirmer avec l'utilisateur si c'est bien ce qu'il veut. /// </summary> /// <remarks>Quitte également la room (important) Et aussi le loggin.</remarks> /// <param name="e"></param> protected override void OnClosing(System.ComponentModel.CancelEventArgs e) { base.OnClosing(e); // Cacher la fenêtre appele le OnClosing aussi, donc _joinedGame est // vrai quand on veut cacher la fenêtre. if (_joinedGame) { e.Cancel = true; return; } _isQuitting = true; if (_madeHimQuit && !_gameStart) { MessageBox.Show("Vous avez été déconnecté, veuillez vous reconnecter!", "Erreur", MessageBoxButton.OK); LoginView logView = new LoginView(); logView.Show(); } else if (_gameStart && !_joinedGame) { if (!_changedRoom) { e.Cancel = true; _isQuitting = false; return; } _joinedGame = true; // Hehe MessageBox.Show(new Window(), "La partie commence"); Guid? gameToken = null; using (var client = new GameProxy.GameServiceClient()) { try { gameToken = client.JoinGame( UserSessionSingleton.Instance.UserToken.Value, (tabCurrentRoom.DataContext as Guid?).Value ); } catch (System.ServiceModel.FaultException fe) { MessageBox.Show( "Impossible de joindre la partie: " + fe.Message ); } } if (gameToken != null) { GameView gv = new GameView(); gv.Closed += ShowLobby; gv.GameToken = gameToken.Value; gv.IsGameMaster = false; gv.Show(); e.Cancel = true; _isQuitting = false; _joinedGame = true; _changedRoom = false; Hide(); } } else if (MessageBox.Show("Vous êtes sur le point de quitter MilleBornes en ligne. Continuer ?", "Quitter MilleBornes en ligne", MessageBoxButton.OKCancel) == MessageBoxResult.OK) { if (tabCurrentRoom.DataContext != null) { try { using (var svcClient = new LobbyServiceClient()) { Guid guid = (Guid)tabCurrentRoom.DataContext; svcClient.LeaveRoom(UserSessionSingleton.Instance.UserToken.Value, guid); } } catch { } } Application.Current.Shutdown(0); } else { e.Cancel = true; _isQuitting = false; } }