/// <summary> /// Public method called when the user wants to leave the network session. /// Displays a confirmation message box, then disposes the session, removes /// the NetworkSessionComponent, and returns them to the main menu screen. /// </summary> public static void LeaveSession(ScreenManager screenManager, PlayerIndex playerIndex) { NetworkSessionComponent self = FindSessionComponent(screenManager.Game); if (self != null) { // Display a message box to confirm the user really wants to leave. string message; if (self.networkSession.IsHost) { message = Resources.ConfirmEndSession; } else { message = Resources.ConfirmLeaveSession; } MessageBoxScreen confirmMessageBox = new MessageBoxScreen(message); // Hook the messge box ok event to actually leave the session. confirmMessageBox.Accepted += delegate { self.LeaveSession(); }; screenManager.AddScreen(confirmMessageBox, playerIndex); } }
public static void LeaveSessionWithoutAsking(ScreenManager screenManager, PlayerIndex playerIndex) { try { NetworkSessionComponent self = FindSessionComponent(screenManager.Game); self.LeaveSession(); } catch { } }
/// <summary> /// Handle MenuCancel inputs by clearing our ready status, or if it is /// already clear, prompting if the user wants to leave the session. /// </summary> void HandleMenuCancel(LocalNetworkGamer gamer) { if (gamer.IsReady) { gamer.IsReady = false; } else { PlayerIndex playerIndex = gamer.SignedInGamer.PlayerIndex; NetworkSessionComponent.LeaveSession(ScreenManager, playerIndex); } }
/// <summary> /// Event handler for when the End/Leave Session menu entry is selected. /// </summary> void LeaveSessionMenuEntrySelected(object sender, PlayerIndexEventArgs e) { NetworkSessionComponent.LeaveSession(ScreenManager, e.PlayerIndex); }