From 08a9c7511684f3d096369b5e40726f0278aa6909 Mon Sep 17 00:00:00 2001 From: NepuShiro Date: Sun, 28 Sep 2025 18:11:04 -0500 Subject: [PATCH 1/5] reformat/rename code, checks if configs are hidden, add custom nested category events --- BepisModSettings/BepisModSettings.csproj | 4 +- ...BepisPluginPage.cs => BepisConfigsPage.cs} | 280 +++++++++--------- .../DataFeeds/BepisNestedCategoryPage.cs | 36 ++- ...pisSettingsPage.cs => BepisPluginsPage.cs} | 20 +- BepisModSettings/DataFeeds/DataFeedHelpers.cs | 4 +- .../DataFeeds/DataFeedInjector.cs | 6 +- BepisModSettings/Plugin.cs | 31 +- 7 files changed, 212 insertions(+), 169 deletions(-) rename BepisModSettings/DataFeeds/{BepisPluginPage.cs => BepisConfigsPage.cs} (61%) rename BepisModSettings/DataFeeds/{BepisSettingsPage.cs => BepisPluginsPage.cs} (87%) diff --git a/BepisModSettings/BepisModSettings.csproj b/BepisModSettings/BepisModSettings.csproj index b10dd63..6ce9fed 100644 --- a/BepisModSettings/BepisModSettings.csproj +++ b/BepisModSettings/BepisModSettings.csproj @@ -8,12 +8,12 @@ https://github.com/ResoniteModding/$(AssemblyName) ResoniteModding.$(AssemblyName) false - false + true true $(ResonitePath)/ $(MSBuildProgramFiles32)\Steam\steamapps\common\Resonite\ $(HOME)/.steam/steam/steamapps/common/Resonite/ - $(GamePath)BepInEx\plugins\$(AssemblyName) + $(GamePath)BepInEx\plugins\ResoniteModding-$(AssemblyName)\$(AssemblyName) $(AssemblyName) https://nuget-modding.resonite.net/v3/index.json; diff --git a/BepisModSettings/DataFeeds/BepisPluginPage.cs b/BepisModSettings/DataFeeds/BepisConfigsPage.cs similarity index 61% rename from BepisModSettings/DataFeeds/BepisPluginPage.cs rename to BepisModSettings/DataFeeds/BepisConfigsPage.cs index 95dd328..ce87e52 100644 --- a/BepisModSettings/DataFeeds/BepisPluginPage.cs +++ b/BepisModSettings/DataFeeds/BepisConfigsPage.cs @@ -17,7 +17,7 @@ namespace BepisModSettings.DataFeeds; -public static class BepisPluginPage +public static class BepisConfigsPage { internal static readonly Dictionary, IAsyncEnumerable>> CategoryHandlers = new Dictionary, IAsyncEnumerable>>(); @@ -77,7 +77,7 @@ internal static async IAsyncEnumerable Enumerate(IReadOnlyList Plugin.ShowHidden.Value || !HiddenConfig.IsHidden(config))) { DataFeedLabel noConfigs = new DataFeedLabel(); noConfigs.InitBase("NoConfigs", path, null, "Settings.BepInEx.Plugins.NoConfigs".AsLocaleKey()); @@ -134,192 +134,194 @@ internal static async IAsyncEnumerable Enumerate(IReadOnlyList EnumerateConfigs(ConfigFile configFile, ModMeta metaData, IReadOnlyList path) { - // Used for enum config keys. basically you can define a function which will display a subcategory of this category. CategoryHandlers.Clear(); - HashSet sections = new HashSet(); - List added = new List(); - foreach (ConfigEntryBase config in configFile.Values) + List> groupedConfigs = configFile.Values.Where(config => Plugin.ShowHidden.Value || !HiddenConfig.IsHidden(config)).GroupBy(config => config.Definition.Section).ToList(); + foreach (IGrouping sectionGroup in groupedConfigs) { - if (!Plugin.ShowHidden.Value && HiddenConfig.IsHidden(config)) continue; + string section = sectionGroup.Key; - Type valueType = config.SettingType; + if (!sectionGroup.Any()) continue; - string section = config.Definition.Section; - if (sections.Add(section)) + DataFeedResettableGroup configs = new DataFeedResettableGroup(); + configs.InitBase(section, path, null, section); + configs.InitResetAction(a => { - DataFeedResettableGroup configs = new DataFeedResettableGroup(); - configs.InitBase(section, path, null, section); - configs.InitResetAction(a => - { - Button but = a.Slot.GetComponentInChildren