public void OnLostConnection(bool suppressMessage = false) { lock (stateLock) { if (state == AppSate.LoadLevel || state == AppSate.ClientLoadLevel || state == AppSate.ServerLoadLevel || state == AppSate.ClientLoadLobby || state == AppSate.ServerLoadLobby) { if (NetGame.netlog) { UnityEngine.Debug.Log("Queueing lostConnection"); } queueAfterLevelLoad = delegate { OnLostConnection(suppressMessage); }; } else { RatingMenu.instance.LevelOver(); MultiplayerSelectLobbyMenu multiplayerSelectLobbyMenu = MenuSystem.instance.activeMenu as MultiplayerSelectLobbyMenu; if (multiplayerSelectLobbyMenu != null) { multiplayerSelectLobbyMenu.OnBack(); } else { NetGame.instance.LeaveGame(); if (state == AppSate.PlayLevel || state == AppSate.ClientPlayLevel || state == AppSate.ServerPlayLevel || state == AppSate.ClientWaitServerLoad) { ExitGame(); } EnterMenu(); } if (RatingMenu.instance.ShowRatingMenu()) { RatingMenu.RatingDestination destination = RatingMenu.RatingDestination.kMainMenu; if (!suppressMessage) { destination = RatingMenu.RatingDestination.kLostConnection; } GotoRatingsMenu(destination, showLoading: false); } else { NetGame.isNetStarting = false; if (suppressMessage) { MenuSystem.instance.ShowMainMenu(); } else { Dialogs.ConnectionLost(delegate { MenuSystem.instance.ShowMainMenu(); }); } } } } }
private void GotoRatingsMenu(RatingMenu.RatingDestination destination, bool showLoading) { MenuCameraEffects.FadeInPauseMenu(); RatingMenu.instance.SetDestination(destination); if (showLoading) { SubtitleManager.instance.SetProgress(ScriptLocalization.TUTORIAL.LOADING, 1f, 1f); } MenuSystem.instance.ShowMainMenu <RatingMenu>(); }