using Harmony; using I2.Loc; using Riptide.Demos.Steam.PlayerHosted; using TMPro; using UnityEngine; using UnityEngine.UI; namespace KCM.UI { [HarmonyPatch(typeof(GameState), "SetNewMode")] public static class MultiplayerMenuInjector { private static bool injected; public static void Postfix() { try { EnsureInjected(); } catch (System.Exception ex) { Main.Log("MultiplayerMenuInjector failed"); Main.Log(ex); } } private static void EnsureInjected() { if (injected) return; if (GameState.inst == null || GameState.inst.mainMenuMode == null) return; GameObject mainMenuUi = GameState.inst.mainMenuMode.mainMenuUI; if (mainMenuUi == null) return; Transform buttonContainer = mainMenuUi.transform.Find("TopLevelUICanvas/TopLevel/Body/ButtonContainer"); if (buttonContainer == null) return; if (buttonContainer.Find("KCM_Multiplayer") != null) { injected = true; return; } Button template = mainMenuUi.transform.Find("TopLevelUICanvas/TopLevel/Body/ButtonContainer/New")?.GetComponent