From 3594b4a58198fa98757955d835a7da7205fbc50e Mon Sep 17 00:00:00 2001 From: Olavi Mustanoja Date: Sat, 17 Jul 2021 17:57:40 +0300 Subject: [PATCH] fix: invites after disconnecting from game --- RoundsWithFriends/PrivateRoomHandler.cs | 20 +------------------- RoundsWithFriends/RoundEndHandler.cs | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/RoundsWithFriends/PrivateRoomHandler.cs b/RoundsWithFriends/PrivateRoomHandler.cs index da6e050..dab6aef 100644 --- a/RoundsWithFriends/PrivateRoomHandler.cs +++ b/RoundsWithFriends/PrivateRoomHandler.cs @@ -48,28 +48,13 @@ public bool IsOpen } } - private static void OnSceneLoad(Scene scene, LoadSceneMode mode) - { - // Map changes also cause scene loads. We don't want to open the lobby during those... - if (scene.name == "Main") - { - SceneManager.sceneLoaded -= PrivateRoomHandler.OnSceneLoad; - PrivateRoomHandler.instance.Open(); - - if (PhotonNetwork.IsMasterClient) - { - PrivateRoomHandler.RestoreSettings(); - } - } - } - private static void SaveSettings() { PrivateRoomHandler.PrevHandlerID = GameModeManager.CurrentHandlerID; PrivateRoomHandler.PrevSettings = GameModeManager.CurrentHandler.Settings; } - private static void RestoreSettings() + public static void RestoreSettings() { PrivateRoomHandler.instance.SyncMethod(nameof(PrivateRoomHandler.SetGameSettings), null, PrivateRoomHandler.PrevHandlerID, PrivateRoomHandler.PrevSettings); PrivateRoomHandler.PrevHandlerID = null; @@ -624,9 +609,6 @@ public static void StartGame() PrivateRoomHandler.SaveSettings(); } - // The main scene is reloaded after the game. After the reload is done, we want to reopen the lobby. - SceneManager.sceneLoaded += PrivateRoomHandler.OnSceneLoad; - PhotonNetwork.LocalPlayer.SetProperty("ready", false); PhotonNetwork.LocalPlayer.SetProperty("readyOrder", -1); diff --git a/RoundsWithFriends/RoundEndHandler.cs b/RoundsWithFriends/RoundEndHandler.cs index cfc0e59..bef325b 100644 --- a/RoundsWithFriends/RoundEndHandler.cs +++ b/RoundsWithFriends/RoundEndHandler.cs @@ -145,10 +145,27 @@ public static void Exit() } } + // Reopen lobby after main scene is loaded + SceneManager.sceneLoaded += RoundEndHandler.OnSceneLoad; + gm.GameMode.StopAllCoroutines(); SceneManager.LoadScene(SceneManager.GetActiveScene().name); RoundEndHandler.instance.waitingForHost = false; } + + private static void OnSceneLoad(Scene scene, LoadSceneMode mode) + { + if (scene.name == "Main") + { + SceneManager.sceneLoaded -= RoundEndHandler.OnSceneLoad; + PrivateRoomHandler.instance.Open(); + + if (PhotonNetwork.IsMasterClient) + { + PrivateRoomHandler.RestoreSettings(); + } + } + } } }