diff --git a/Addons/GBSUClient.cs b/Addons/GBSUClient.cs index a800c62..2fb7562 100644 --- a/Addons/GBSUClient.cs +++ b/Addons/GBSUClient.cs @@ -1,5 +1,4 @@ using GB.Core; -using GB.Networking.Utils; using GB.Platform.Lobby; using UnityEngine; @@ -9,24 +8,10 @@ public class GBSUClient : MonoBehaviour { public static void JoinServer(string serverip, int serverport) { - if (!Helper.hosting) - { - LobbyManager.Instance.LobbyStates.IP = serverip; - LobbyManager.Instance.LobbyStates.Port = serverport; - LobbyManager.Instance.LobbyStates.CurrentState = LobbyState.State.Ready | LobbyState.State.InGame; - LobbyManager.Instance.LocalBeasts.SetupNetMemberContext(true); - MonoSingleton.Instance.UNetManager.LaunchClient(serverip, serverport); - } - else - { - GBSUGui.PushError("You are currently hosting a game! Please stop your server before attempting to join."); - } - } - - // this method should be used when something has went wrong - // because players can just use the escape menu to exit - public static void DisconnectFromServer() - { - GBNetUtils.DisconnectSelf(false); + LobbyManager.Instance.LobbyStates.IP = serverip; + LobbyManager.Instance.LobbyStates.Port = serverport; + LobbyManager.Instance.LobbyStates.CurrentState = LobbyState.State.Ready | LobbyState.State.InGame; + LobbyManager.Instance.LocalBeasts.SetupNetMemberContext(true); + MonoSingleton.Instance.UNetManager.LaunchClient(serverip, serverport); } } \ No newline at end of file diff --git a/Addons/GBSUGui.cs b/Addons/GBSUGui.cs index 3053d5d..cac5917 100644 --- a/Addons/GBSUGui.cs +++ b/Addons/GBSUGui.cs @@ -59,10 +59,6 @@ Set CLI arguments: -ip, -port (optionally -maplist) { Application.Quit(0); } - if (GUI.Button(new Rect(320f, 45f, 55f, 30f), "Menu")) - { - Helper.SwitchToMenu(); - } if (Helper.serverip != null) { if (GUI.Button(new Rect(20f, 260f, 170f, 30f), "Host")) @@ -97,7 +93,14 @@ Make sure to download a file from the examples given and rename it to config.jso { if (LobbyManager.Instance.LobbyStates.SelfState == LobbyState.Game.Online) { - GBSUClient.JoinServer(Helper.serverip, Helper.serverport); + if (!Helper.hosting) + { + GBSUClient.JoinServer(Helper.serverip, Helper.serverport); + } + else + { + PushError("You are currently hosting a match! Please restart the game before attempting to join."); + } } else { @@ -105,6 +108,10 @@ Make sure to download a file from the examples given and rename it to config.jso } } } + else + { + PushError("Couldn't find the -ip CLI argument. Please refer to the documentation."); + } if (GUI.Button(new Rect(20f, 295f, 170f, 30f), "Cap FPS to 60")) { diff --git a/Addons/GBSUServer.cs b/Addons/GBSUServer.cs index 06ee5e8..2197a47 100644 --- a/Addons/GBSUServer.cs +++ b/Addons/GBSUServer.cs @@ -4,6 +4,7 @@ using GB.Core; using GB.Game; using HarmonyLib; using UnityEngine; +using UnityEngine.SceneManagement; #pragma warning disable IDE0051 // Private member is unused @@ -26,8 +27,6 @@ public class GBSUServer : MonoBehaviour //_gmInit = AccessTools.Method(typeof(GameMode), "Init"); localSingleGang = Traverse.Create(nameof(GameMode)).Field("localSingleGang"); gameTimer = Traverse.Create(nameof(GameMode)).Field("timer"); - - AudioListener.volume = 0; // mute game audio } void SetLocalGangToOff() { @@ -36,17 +35,15 @@ public class GBSUServer : MonoBehaviour public static void StartServer() { - if (!Helper.hosting) - { - Helper.hosting = true; + Helper.hosting = true; + AudioListener.volume = 0; // mute game audio - Plugin.AddServerComp(); // add custom GBSU server component + Plugin.AddServerComp(); // add custom GBSU server component - RotationConfig gameConfig = GBConfigLoader.LoadRotationConfig(null); // the argument doesn't matter as we do stuff in the method - ServerConfig serverConfig = NetConfigLoader.LoadServerConfig(); // load default server config, because it can be overridden by args like -ip and -port - MonoSingleton.Instance.UNetManager.LaunchServer(serverConfig); // launch the server with the server config - MonoSingleton.Instance.UNetManager.GetComponent().ChangeRotationConfig(gameConfig, 0); // set server's rotationconfig - } + RotationConfig gameConfig = GBConfigLoader.LoadRotationConfig(null); // the argument doesn't matter as we do stuff in the method + ServerConfig serverConfig = NetConfigLoader.LoadServerConfig(); // load default server config, because it can be overridden by args like -ip and -port + MonoSingleton.Instance.UNetManager.LaunchServer(serverConfig); // launch the server with the server config + MonoSingleton.Instance.UNetManager.GetComponent().ChangeRotationConfig(gameConfig, 0); // set server's rotationconfig } public static void StopServer() @@ -63,7 +60,7 @@ public class GBSUServer : MonoBehaviour Plugin.DestroyServerComp(); // go back to main menu - Helper.SwitchToMenu(); + SceneManager.LoadScene("Menu"); } /* public string GetRemainingRoundTime() diff --git a/Addons/Helper.cs b/Addons/Helper.cs index 0139ddc..16b4a19 100644 --- a/Addons/Helper.cs +++ b/Addons/Helper.cs @@ -1,11 +1,7 @@ using System; using System.IO; -using GB.Core; -using GB.Networking.Utils; -using GB.Platform.Lobby; using UnityEngine; using UnityEngine.Analytics; -using UnityEngine.SceneManagement; namespace GBSU.Addons; public class Helper @@ -87,32 +83,4 @@ public class Helper Plugin.Log.LogInfo("Set custom rotation config path at " + GameConfigPath); } } - - public static void SwitchToMenu() - { - if (hosting) - { - GBSUGui.PushError("Please press the Stop server button instead!"); - } - else - { - // uhm, time to panic! - - // let's begin by disconnecting if theres an active connection - try - { - GBNetUtils.DisconnectSelf(false); - } - catch (Exception e) - { - Plugin.Log.LogWarning("Couldn't disconnect from server:\n" + e); - } - - // go back to main menu - SceneManager.LoadScene(Global.MENU_SCENE_NAME); - - // make sure our lobby state is menu - LobbyManager.Instance.LobbyStates.SelfState = LobbyState.Game.Menu; - } - } } \ No newline at end of file diff --git a/Plugin.cs b/Plugin.cs index 98947a4..ed90b37 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -60,10 +60,6 @@ public class Plugin : BaseUnityPlugin { Helper.serverip = CommandLineParser.Instance.GetValueForKey("-ip", false); } - else - { - GBSUGui.PushError("Couldn't find the -ip CLI argument. Please refer to the documentation."); - } if (CommandLineParser.Instance.KeyExists("-port")) { int.TryParse(CommandLineParser.Instance.GetValueForKey("-port", false), out Helper.serverport);