diff --git a/NewHorizons/Main.cs b/NewHorizons/Main.cs index a8512246..0314cf61 100644 --- a/NewHorizons/Main.cs +++ b/NewHorizons/Main.cs @@ -274,11 +274,11 @@ namespace NewHorizons LoadAddonManifest("Assets/addon-manifest.json", this); } - public override void SetupPauseMenu() + public override void SetupPauseMenu(IPauseMenuManager pauseMenu) { - base.SetupPauseMenu(); - DebugReload.InitializePauseMenu(); - DebugMenu.InitializePauseMenu(); + base.SetupPauseMenu(pauseMenu); + DebugReload.InitializePauseMenu(pauseMenu); + DebugMenu.InitializePauseMenu(pauseMenu); } public void OnDestroy() diff --git a/NewHorizons/NewHorizons.csproj b/NewHorizons/NewHorizons.csproj index 04e06890..e8abb757 100644 --- a/NewHorizons/NewHorizons.csproj +++ b/NewHorizons/NewHorizons.csproj @@ -16,7 +16,7 @@ - + diff --git a/NewHorizons/Utility/DebugTools/DebugReload.cs b/NewHorizons/Utility/DebugTools/DebugReload.cs index 446fcc8f..cd067d98 100644 --- a/NewHorizons/Utility/DebugTools/DebugReload.cs +++ b/NewHorizons/Utility/DebugTools/DebugReload.cs @@ -3,6 +3,7 @@ using NewHorizons.Utility.Files; using NewHorizons.Utility.OWML; using OWML.Common; using OWML.Common.Menus; +using OWML.Utils; using System; namespace NewHorizons.Utility.DebugTools @@ -12,19 +13,16 @@ namespace NewHorizons.Utility.DebugTools private static SubmitAction _reloadButton; - public static void InitializePauseMenu() + public static void InitializePauseMenu(IPauseMenuManager pauseMenu) { - _reloadButton = Main.Instance.ModHelper.MenuHelper.PauseMenuManager.MakeSimpleButton(TranslationHandler.GetTranslation("Reload Configs", TranslationHandler.TextType.UI).ToUpper(), 3, true); + _reloadButton = pauseMenu.MakeSimpleButton(TranslationHandler.GetTranslation("Reload Configs", TranslationHandler.TextType.UI).ToUpper(), 3, true); _reloadButton.OnSubmitAction += ReloadConfigs; UpdateReloadButton(); } public static void UpdateReloadButton() { - if (_reloadButton != null) - { - _reloadButton.gameObject.SetActive(Main.Debug); - } + _reloadButton?.SetButtonVisible(Main.Debug); } private static void ReloadConfigs() diff --git a/NewHorizons/Utility/DebugTools/Menu/DebugMenu.cs b/NewHorizons/Utility/DebugTools/Menu/DebugMenu.cs index 4f3f5074..92e77893 100644 --- a/NewHorizons/Utility/DebugTools/Menu/DebugMenu.cs +++ b/NewHorizons/Utility/DebugTools/Menu/DebugMenu.cs @@ -5,6 +5,7 @@ using NewHorizons.Utility.OWML; using Newtonsoft.Json; using OWML.Common; using OWML.Common.Menus; +using OWML.Utils; using System; using System.Collections.Generic; using System.IO; @@ -23,7 +24,6 @@ namespace NewHorizons.Utility.DebugTools.Menu internal Vector2 EditorMenuSize = new Vector2(600, 900); bool menuOpen = false; static bool openMenuOnPause; - static bool staticInitialized; // Menu params internal static IModBehaviour loadedMod = null; @@ -57,28 +57,13 @@ namespace NewHorizons.Utility.DebugTools.Menu private void Start() { - if (!staticInitialized) - { - _instance = this; + _instance = this; - staticInitialized = true; + Main.Instance.ModHelper.MenuHelper.PauseMenuManager.PauseMenuOpened += OnOpenMenu; + Main.Instance.ModHelper.MenuHelper.PauseMenuManager.PauseMenuClosed += OnCloseMenu; + Main.Instance.OnChangeStarSystem.AddListener(OnChangeStarSystem); - // This is lying, these hooks dont exist in the new menu system - Main.Instance.ModHelper.Menus.PauseMenu.OnClosed += CloseMenu; - Main.Instance.ModHelper.Menus.PauseMenu.OnOpened += RestoreMenuOpennessState; - - Main.Instance.OnChangeStarSystem.AddListener((string s) => { - if (saveButtonUnlocked) - { - SaveLoadedConfigsForRecentSystem(); - saveButtonUnlocked = false; - } - }); - } - else - { - InitMenu(); - } + InitMenu(); if (loadedMod != null) { @@ -86,25 +71,38 @@ namespace NewHorizons.Utility.DebugTools.Menu } } - public static void InitializePauseMenu() + public void OnDestroy() { - pauseMenuButton = Main.Instance.ModHelper.MenuHelper.PauseMenuManager.MakeSimpleButton(TranslationHandler.GetTranslation("Toggle Dev Tools Menu", TranslationHandler.TextType.UI).ToUpper(), 3, true); - _instance.InitMenu(); + Main.Instance.ModHelper.MenuHelper.PauseMenuManager.PauseMenuOpened -= OnOpenMenu; + Main.Instance.ModHelper.MenuHelper.PauseMenuManager.PauseMenuClosed -= OnCloseMenu; + Main.Instance.OnChangeStarSystem.RemoveListener(OnChangeStarSystem); + } + + private void OnChangeStarSystem(string _) + { + if (saveButtonUnlocked) + { + SaveLoadedConfigsForRecentSystem(); + saveButtonUnlocked = false; + } + } + + public static void InitializePauseMenu(IPauseMenuManager pauseMenu) + { + pauseMenuButton = pauseMenu.MakeSimpleButton(TranslationHandler.GetTranslation("Toggle Dev Tools Menu", TranslationHandler.TextType.UI).ToUpper(), 3, true); + _instance?.InitMenu(); } public static void UpdatePauseMenuButton() { - if (pauseMenuButton != null) - { - pauseMenuButton.gameObject.SetActive(Main.Debug); - } + pauseMenuButton?.SetButtonVisible(Main.Debug); } - private void RestoreMenuOpennessState() { menuOpen = openMenuOnPause; } + private void OnOpenMenu() { menuOpen = openMenuOnPause; } private void ToggleMenu() { menuOpen = !menuOpen; openMenuOnPause = !openMenuOnPause; } - private void CloseMenu() { menuOpen = false; } + private void OnCloseMenu() { menuOpen = false; } private void OnGUI() {