diff --git a/MiraAPI/LocalSettings/LocalSettingsManager.cs b/MiraAPI/LocalSettings/LocalSettingsManager.cs index aa1c217..874e258 100644 --- a/MiraAPI/LocalSettings/LocalSettingsManager.cs +++ b/MiraAPI/LocalSettings/LocalSettingsManager.cs @@ -12,6 +12,7 @@ public static class LocalSettingsManager { internal static readonly Dictionary TypeToTab = []; internal static readonly List Tabs = []; + internal static readonly List AvailableTabs = []; internal static bool RegisterTab(Type type, BasePlugin pluginInfo) { @@ -27,6 +28,10 @@ public static class LocalSettingsManager } Tabs.Add(tab); + if (tab.ShouldCreateButton) + { + AvailableTabs.Add(tab); + } TypeToTab.Add(type, tab); typeof(LocalSettingsTabSingleton<>).MakeGenericType(type) diff --git a/MiraAPI/Patches/LocalSettings/OptionsMenuPatches.cs b/MiraAPI/Patches/LocalSettings/OptionsMenuPatches.cs index 10ab62d..a8cab15 100644 --- a/MiraAPI/Patches/LocalSettings/OptionsMenuPatches.cs +++ b/MiraAPI/Patches/LocalSettings/OptionsMenuPatches.cs @@ -69,7 +69,7 @@ public static class OptionsMenuPatches int i = 0; int tabIdx = 0; int page = 1; - foreach (var settings in LocalSettingsManager.Tabs) + foreach (var settings in LocalSettingsManager.AvailableTabs) { var tab = settings.CreateTab(__instance); if (settings.ShouldCreateButton) @@ -164,12 +164,12 @@ public static class OptionsMenuPatches public static bool OpenTabGroupPrefix(OptionsMenuBehaviour __instance, ref int index) { __instance.Tabs.ToList().ForEach(x => x.Close()); // Close all vanilla tabs - LocalSettingsManager.Tabs.ForEach(CustomClose); // Close all mod tabs + LocalSettingsManager.AvailableTabs.ForEach(CustomClose); // Close all mod tabs // Tabs with index 10 and above are the mod settings tabs if (index >= 10) { - CustomOpen(LocalSettingsManager.Tabs[index - 10]); + CustomOpen(LocalSettingsManager.AvailableTabs[index - 10]); return false; } @@ -183,7 +183,7 @@ public static class OptionsMenuPatches [HarmonyPatch(nameof(OptionsMenuBehaviour.Open))] public static void OpenPostfix(OptionsMenuBehaviour __instance) { - LocalSettingsManager.Tabs.ForEach(CustomClose); + LocalSettingsManager.AvailableTabs.ForEach(CustomClose); currentPage = 1; UpdatePages(); }