/// <summary> /// Makes the server change to the menu scene, and bring all clients with it /// </summary> public void ReturnToMenu(MenuPage returnPage) { MainMenuUI.s_ReturnPage = returnPage; // Update will change scenes once loading screen is visible m_SceneChangeMode = SceneChangeMode.Menu; if (s_IsServer && state == NetworkState.InGame) { // Clear all client's ready states ClearAllReadyStates(); // Tell NetworkPlayers to show their loading screens for (int i = 0; i < connectedPlayers.Count; ++i) { NetworkPlayer player = connectedPlayers[i]; if (player != null) { player.RpcPrepareForLoad(); } } } else { // Show loading screen LoadingModal loading = LoadingModal.s_Instance; if (loading != null) { loading.FadeIn(); } } }
public void DoIfNetworkReady(Action task) { if (task == null) { throw new ArgumentNullException("task"); } NetworkManager netManager = NetworkManager.instance; if (netManager.isNetworkActive) { waitTask = task; LoadingModal modal = LoadingModal.instance; if (modal != null) { modal.FadeIn(); } readyToFireTask = false; netManager.clientStopped += OnClientStopped; } else { task(); } }
public void RpcPrepareForLoad() { if (isLocalPlayer) { // Show loading screen LoadingModal loading = LoadingModal.s_Instance; if (loading != null) { loading.FadeIn(); } } }
/// <summary> /// Makes the server change to the menu scene, and bring all clients with it /// </summary> public void ReturnToMenu(MenuPage returnPage) { MainMenuUI.s_ReturnPage = returnPage; m_SceneChangeMode = SceneChangeMode.Menu; { // Show loading screen LoadingModal loading = LoadingModal.s_Instance; if (loading != null) { loading.FadeIn(); } } }
/// <summary> /// Progress to game scene when in transitioning state /// </summary> protected virtual void Update() { if (m_SceneChangeMode != SceneChangeMode.None) { LoadingModal modal = LoadingModal.s_Instance; bool ready = true; if (modal != null) { ready = modal.readyToTransition; if (!ready && modal.fader.currentFade == Fade.None) { modal.FadeIn(); } } if (ready) { if (m_SceneChangeMode == SceneChangeMode.Menu) { if (state != NetworkState.Inactive) { ServerChangeScene(s_LobbySceneName); if (gameType == NetworkGameType.Singleplayer) { state = NetworkState.Pregame; } else { state = NetworkState.InLobby; } } else { SceneManager.LoadScene(s_LobbySceneName); } } else { MapDetails map = GameSettings.s_Instance.map; ServerChangeScene(map.sceneName); state = NetworkState.InGame; } m_SceneChangeMode = SceneChangeMode.None; } } }