diff --git a/src/OWML.Launcher/OWML.Manifest.json b/src/OWML.Launcher/OWML.Manifest.json index 06d55c717..78a9e37f2 100644 --- a/src/OWML.Launcher/OWML.Manifest.json +++ b/src/OWML.Launcher/OWML.Manifest.json @@ -3,7 +3,7 @@ "author": "Alek", "name": "OWML", "uniqueName": "Alek.OWML", - "version": "2.10.0", + "version": "2.10.1", "minGameVersion": "1.1.14.768", "maxGameVersion": "1.1.14.768" } diff --git a/src/OWML.ModHelper.Menus/NewMenuSystem/MenuManager.cs b/src/OWML.ModHelper.Menus/NewMenuSystem/MenuManager.cs index 65022c26f..0c2944a52 100644 --- a/src/OWML.ModHelper.Menus/NewMenuSystem/MenuManager.cs +++ b/src/OWML.ModHelper.Menus/NewMenuSystem/MenuManager.cs @@ -49,7 +49,7 @@ public MenuManager( _owmlConfig = owmlConfig; _unityEvents = unityEvents; TitleMenuManager = new TitleMenuManager(); - PopupMenuManager = new PopupMenuManager(console, harmony); + PopupMenuManager = new PopupMenuManager(console, harmony, this); OptionsMenuManager = new OptionsMenuManager(console, unityEvents, PopupMenuManager); PauseMenuManager = new PauseMenuManager(console); @@ -58,18 +58,14 @@ public MenuManager( LoadManager.OnCompleteSceneLoad += (_, newScene) => { - if (newScene is OWScene.TitleScreen or OWScene.SolarSystem or OWScene.EyeOfTheUniverse) + if (newScene is OWScene.SolarSystem or OWScene.EyeOfTheUniverse) { SetupMenus(((IMenuManager)this).ModList); } }; - - modUnityEvents.RunWhen( - PlayerData.IsLoaded, - () => SetupMenus(((IMenuManager)this).ModList)); } - private void SetupMenus(IList modList) + internal void SetupMenus(IList modList) { void SaveConfig() { @@ -221,6 +217,7 @@ void SaveConfig() { mod.ModHelper.Config.SetSettingsValue(name, newValue); mod.ModHelper.Storage.Save(mod.ModHelper.Config, Constants.ModConfigFileName); + mod.Configure(mod.ModHelper.Config); }; break; case SettingType.TOGGLE: @@ -233,6 +230,7 @@ void SaveConfig() { mod.ModHelper.Config.SetSettingsValue(name, newValue); mod.ModHelper.Storage.Save(mod.ModHelper.Config, Constants.ModConfigFileName); + mod.Configure(mod.ModHelper.Config); }; break; case SettingType.SELECTOR: @@ -245,6 +243,7 @@ void SaveConfig() { mod.ModHelper.Config.SetSettingsValue(name, newSelection); mod.ModHelper.Storage.Save(mod.ModHelper.Config, Constants.ModConfigFileName); + mod.Configure(mod.ModHelper.Config); }; break; case SettingType.SEPARATOR: @@ -258,9 +257,9 @@ void SaveConfig() settingSlider.ModSettingKey = name; settingSlider.OnValueChanged += (float newValue) => { - _console.WriteLine($"changed to {newValue}"); mod.ModHelper.Config.SetSettingsValue(name, newValue); mod.ModHelper.Storage.Save(mod.ModHelper.Config, Constants.ModConfigFileName); + mod.Configure(mod.ModHelper.Config); }; break; case SettingType.TEXT: @@ -270,9 +269,9 @@ void SaveConfig() textInput.OnConfirmEntry += () => { var newValue = textInput.GetInputText(); - _console.WriteLine($"changed to {newValue}"); mod.ModHelper.Config.SetSettingsValue(name, newValue); mod.ModHelper.Storage.Save(mod.ModHelper.Config, Constants.ModConfigFileName); + mod.Configure(mod.ModHelper.Config); }; break; case SettingType.NUMBER: @@ -282,9 +281,9 @@ void SaveConfig() numberInput.OnConfirmEntry += () => { var newValue = double.Parse(numberInput.GetInputText()); - _console.WriteLine($"changed to {newValue}"); mod.ModHelper.Config.SetSettingsValue(name, newValue); mod.ModHelper.Storage.Save(mod.ModHelper.Config, Constants.ModConfigFileName); + mod.Configure(mod.ModHelper.Config); }; break; default: diff --git a/src/OWML.ModHelper.Menus/NewMenuSystem/PopupMenuManager.cs b/src/OWML.ModHelper.Menus/NewMenuSystem/PopupMenuManager.cs index 087479f82..749a45eb9 100644 --- a/src/OWML.ModHelper.Menus/NewMenuSystem/PopupMenuManager.cs +++ b/src/OWML.ModHelper.Menus/NewMenuSystem/PopupMenuManager.cs @@ -23,9 +23,10 @@ public class PopupMenuManager : IPopupMenuManager private GameObject _twoChoicePopupBase; private GameObject _inputPopupBase; - public PopupMenuManager(IModConsole console, IHarmonyHelper harmony) + public PopupMenuManager(IModConsole console, IHarmonyHelper harmony, IMenuManager menuManager) { _console = console; + StartupPopupPatches.menuManager = menuManager as MenuManager; LoadManager.OnCompleteSceneLoad += LoadManager_OnCompleteSceneLoad; @@ -323,6 +324,8 @@ public IOWMLFourChoicePopupMenu CreateFourChoicePopup(string message, string con public static class StartupPopupPatches { + public static MenuManager menuManager; + public static bool DetermineStartupPopups(TitleScreenManager __instance) { if (__instance._profileManager.currentProfileGameSave.version == "NONE") @@ -363,7 +366,7 @@ public static bool TryShowStartupPopupsAndShowMenu(TitleScreenManager __instance return false; } - if (PopupMenuManager.PopupsToShow.Count == 0) + if (PopupMenuManager.PopupsToShow == null || PopupMenuManager.PopupsToShow.Count == 0) { __instance._okCancelPopup.ResetPopup(); __instance.SetUpMainMenu(); @@ -375,6 +378,7 @@ public static bool TryShowStartupPopupsAndShowMenu(TitleScreenManager __instance if (firstTimeRun) { + menuManager.SetupMenus((menuManager as IMenuManager).ModList); __instance.FadeInMenuOptions(); return false; } @@ -391,6 +395,12 @@ public static bool TryShowStartupPopups(TitleScreenManager __instance) { string text = "AAAAGGGGGHH"; + if (PopupMenuManager.PopupsToShow == null || PopupMenuManager.PopupsToShow.Count == 0) + { + __instance.TryShowStartupPopupsAndShowMenu(true); + return false; + } + PopupMenuManager.ActivePopup = PopupMenuManager.PopupsToShow.First(); if (PopupMenuManager.ActivePopup <= 2) diff --git a/src/OWML.ModHelper.Menus/NewMenuSystem/TitleMenuManager.cs b/src/OWML.ModHelper.Menus/NewMenuSystem/TitleMenuManager.cs index fac32ceba..4f0923c37 100644 --- a/src/OWML.ModHelper.Menus/NewMenuSystem/TitleMenuManager.cs +++ b/src/OWML.ModHelper.Menus/NewMenuSystem/TitleMenuManager.cs @@ -39,6 +39,8 @@ public SubmitAction CreateTitleButton(string text, int index, bool fromTop) titleScreenManager._mainMenuTextFields = titleScreenManager._mainMenuTextFields.Append(submitAction.GetComponentInChildren()).ToArray(); + newButton.SetActive(true); + return submitAction; }