Fix hidden local tabs breaking the menu

This commit is contained in:
Atony committed 2026-07-30 23:15:24 -05:00
1 parent 8c5aee4beb
commit edee889ffe
2 files changed
+9 -4

No files matched your search

@@ -12,6 +12,7 @@ public static class LocalSettingsManager
{
internal static readonly Dictionary<Type, LocalSettingsTab> TypeToTab = [];
internal static readonly List<LocalSettingsTab> Tabs = [];
internal static readonly List<LocalSettingsTab> 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)
@@ -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();
}