From 88599a0680090b33afc14cb01ee324a900cdd1ea Mon Sep 17 00:00:00 2001 From: Ape <155788660+ApeMV@users.noreply.github.com> Date: Fri, 23 Jan 2026 18:44:07 +0100 Subject: [PATCH] ? ? ? ? ? ? ? ? ? ? --- Modules/Hotkeys.cs | 2 +- Patches/GameStartManagerPatch.cs | 81 ++++++++++++-------------------- 2 files changed, 32 insertions(+), 51 deletions(-) diff --git a/Modules/Hotkeys.cs b/Modules/Hotkeys.cs index d35d48a..11f511d 100644 --- a/Modules/Hotkeys.cs +++ b/Modules/Hotkeys.cs @@ -44,7 +44,7 @@ internal class Hotkeys PlayerControl.LocalPlayer.Collider.enabled = !Ctrl; } - if (Input.GetKeyDown(KeyCode.C) && GameStartManager.Instance.startState == GameStartManager.StartingStates.Countdown && !HudManager.Instance.Chat.IsOpenOrOpening && Utils.IsLobby) + if (Input.GetKeyDown(KeyCode.C) && GameStartManager.InstanceExists && GameStartManager.Instance != null && GameStartManager.Instance.startState == GameStartManager.StartingStates.Countdown && !HudManager.Instance.Chat.IsOpenOrOpening && Utils.IsLobby) { Logger.Info("Resetted start countdown", "KeyCommand"); GameStartManager.Instance.ResetStartState(); diff --git a/Patches/GameStartManagerPatch.cs b/Patches/GameStartManagerPatch.cs index 7751bf1..f4c387f 100644 --- a/Patches/GameStartManagerPatch.cs +++ b/Patches/GameStartManagerPatch.cs @@ -19,11 +19,7 @@ public static class GameStartManagerUpdatePatch __instance.MinPlayers = 1; - if (Main.AutoStart.Value && - OnGameJoinedPatch.AutoStartCheck && - GameStartManager.InstanceExists && - __instance.startState != GameStartManager.StartingStates.Countdown && - GameData.Instance?.PlayerCount >= Options.PlayerAutoStart.GetInt()) + if (Main.AutoStart.Value && OnGameJoinedPatch.AutoStartCheck && GameStartManager.InstanceExists && __instance.startState != GameStartManager.StartingStates.Countdown && GameData.Instance?.PlayerCount >= Options.PlayerAutoStart.GetInt()) { __instance.startState = GameStartManager.StartingStates.Countdown; __instance.countDownTimer = Options.AutoStartTimer.GetFloat(); @@ -65,61 +61,46 @@ public static class GameStartManagerUpdatePatch if (__instance.GameStartText != null) { - __instance.GameStartText.transform.localPosition = - new Vector3(__instance.GameStartText.transform.localPosition.x, 2f, __instance.GameStartText.transform.localPosition.z); + __instance.GameStartText.transform.localPosition = new Vector3(__instance.GameStartText.transform.localPosition.x, 2f, __instance.GameStartText.transform.localPosition.z); } if (GameStartManagerStartPatch.cancelButton != null) { - GameStartManagerStartPatch.cancelButton.gameObject.SetActive( - __instance.startState == GameStartManager.StartingStates.Countdown); + GameStartManagerStartPatch.cancelButton.gameObject.SetActive(__instance.startState == GameStartManager.StartingStates.Countdown); } } } - [HarmonyPatch(typeof(GameStartManager), nameof(GameStartManager.Start))] - public class GameStartManagerStartPatch +[HarmonyPatch(typeof(GameStartManager), nameof(GameStartManager.Start))] +public class GameStartManagerStartPatch +{ + public static TextMeshPro warningText; + public static PassiveButton cancelButton; + + public static void Postfix(GameStartManager __instance) { - public static TextMeshPro warningText; - public static PassiveButton cancelButton; + if (__instance == null || !Utils.IsLobby) return; - public static bool Prefix(GameStartManager __instance) + warningText = UnityEngine.Object.Instantiate(__instance.GameStartText, __instance.transform.parent); + warningText.name = "WarningText"; + warningText.transform.localPosition = new Vector3(0f, __instance.transform.localPosition.y + 3f, -1f); + warningText.gameObject.SetActive(false); + + cancelButton = UnityEngine.Object.Instantiate(__instance.StartButton, __instance.transform); + cancelButton.name = "CancelButton"; + + var cancelLabel = cancelButton.buttonText; + cancelLabel.DestroyTranslator(); + cancelLabel.text = "Cancel"; + + cancelButton.activeTextColor = cancelButton.inactiveTextColor = Color.white; + cancelButton.gameObject.SetActive(false); + + cancelButton.OnClick = new(); + cancelButton.OnClick.AddListener((UnityEngine.Events.UnityAction)(() => { - // If we are not in lobby, skip vanilla Start - if (__instance == null) return false; - if (!Utils.IsLobby) return false; - - // Ensure all required objects exist - if (__instance.GameStartText == null || __instance.StartButton == null) - return false; - - return true; - } - - public static void Postfix(GameStartManager __instance) - { - if (__instance == null || !Utils.IsLobby) return; - - warningText = UnityEngine.Object.Instantiate(__instance.GameStartText, __instance.transform.parent); - warningText.name = "WarningText"; - warningText.transform.localPosition = new Vector3(0f, __instance.transform.localPosition.y + 3f, -1f); - warningText.gameObject.SetActive(false); - - cancelButton = UnityEngine.Object.Instantiate(__instance.StartButton, __instance.transform); - cancelButton.name = "CancelButton"; - - var cancelLabel = cancelButton.buttonText; - cancelLabel.DestroyTranslator(); - cancelLabel.text = "Cancel"; - - cancelButton.activeTextColor = cancelButton.inactiveTextColor = Color.white; - cancelButton.gameObject.SetActive(false); - - cancelButton.OnClick = new(); - cancelButton.OnClick.AddListener((UnityEngine.Events.UnityAction)(() => - { - __instance.ResetStartState(); - })); - } + __instance.ResetStartState(); + })); } +} \ No newline at end of file