diff --git a/MiraAPI/Hud/CustomActionButton.cs b/MiraAPI/Hud/CustomActionButton.cs index ca7dd6a4..b7d4085a 100644 --- a/MiraAPI/Hud/CustomActionButton.cs +++ b/MiraAPI/Hud/CustomActionButton.cs @@ -3,6 +3,7 @@ using System.Globalization; using MiraAPI.Events; using MiraAPI.Events.Mira; using MiraAPI.Keybinds; +using MiraAPI.LocalSettings; using MiraAPI.Patches; using MiraAPI.Utilities; using MiraAPI.Utilities.Assets; @@ -493,7 +494,7 @@ public abstract class CustomActionButton { KeybindText.text = Keybind.CurrentKey.ToString(); KeybindIcon?.SetActive(ActiveInputManager.currentControlType == ActiveInputManager.InputType.Keyboard && - PluginSingleton.Instance.MiraConfig!.ShowKeybinds.Value); + LocalSettingsTabSingleton.Instance.ShowKeybinds.Value); } if (Timer >= 0) diff --git a/MiraAPI/LocalSettings/Attributes/LocalEnumSettingAttribute.cs b/MiraAPI/LocalSettings/Attributes/LocalEnumSettingAttribute.cs index a4a22e27..24ea47fb 100644 --- a/MiraAPI/LocalSettings/Attributes/LocalEnumSettingAttribute.cs +++ b/MiraAPI/LocalSettings/Attributes/LocalEnumSettingAttribute.cs @@ -16,9 +16,12 @@ public class LocalEnumSettingAttribute( string[]? names = null ) : LocalSettingAttribute(name, description) { + private readonly string? _name = name; + private readonly string? _description = description; + /// internal override LocalEnumSetting CreateSetting(Type tab, ConfigEntryBase configEntryBase) { - return new LocalEnumSetting(tab, configEntryBase, configEntryBase.SettingType, name, description, names); + return new LocalEnumSetting(tab, configEntryBase, configEntryBase.SettingType, _name, _description, names); } } diff --git a/MiraAPI/LocalSettings/Attributes/LocalNumberSettingAttribute.cs b/MiraAPI/LocalSettings/Attributes/LocalNumberSettingAttribute.cs index febd711f..3008755b 100644 --- a/MiraAPI/LocalSettings/Attributes/LocalNumberSettingAttribute.cs +++ b/MiraAPI/LocalSettings/Attributes/LocalNumberSettingAttribute.cs @@ -25,9 +25,12 @@ public class LocalNumberSettingAttribute( string? formatString = null ) : LocalSettingAttribute(name, description) { + private readonly string? _name = name; + private readonly string? _description = description; + /// internal override LocalNumberSetting CreateSetting(Type tab, ConfigEntryBase configEntryBase) { - return new LocalNumberSetting(tab, configEntryBase, name, description, new FloatRange(min, max), increment, suffixType, formatString); + return new LocalNumberSetting(tab, configEntryBase, _name, _description, new FloatRange(min, max), increment, suffixType, formatString); } } diff --git a/MiraAPI/LocalSettings/Attributes/LocalSliderSettingAttribute.cs b/MiraAPI/LocalSettings/Attributes/LocalSliderSettingAttribute.cs index 4a211d5e..2db56b4e 100644 --- a/MiraAPI/LocalSettings/Attributes/LocalSliderSettingAttribute.cs +++ b/MiraAPI/LocalSettings/Attributes/LocalSliderSettingAttribute.cs @@ -25,9 +25,12 @@ public class LocalSliderSettingAttribute( MiraNumberSuffixes suffixType = MiraNumberSuffixes.None ) : LocalSettingAttribute(name, description) { + private readonly string? _name = name; + private readonly string? _description = description; + /// internal override LocalSliderSetting CreateSetting(Type tab, ConfigEntryBase configEntryBase) { - return new LocalSliderSetting(tab, configEntryBase, name, description, new FloatRange(min, max), displayValue, suffixType, formatString, roundValue); + return new LocalSliderSetting(tab, configEntryBase, _name, _description, new FloatRange(min, max), displayValue, suffixType, formatString, roundValue); } } diff --git a/MiraAPI/LocalSettings/Attributes/LocalToggleSettingAttribute.cs b/MiraAPI/LocalSettings/Attributes/LocalToggleSettingAttribute.cs index 31c9b094..022fb381 100644 --- a/MiraAPI/LocalSettings/Attributes/LocalToggleSettingAttribute.cs +++ b/MiraAPI/LocalSettings/Attributes/LocalToggleSettingAttribute.cs @@ -14,9 +14,12 @@ public class LocalToggleSettingAttribute( string? description = null ) : LocalSettingAttribute(name, description) { + private readonly string? _name = name; + private readonly string? _description = description; + /// internal override LocalToggleSetting CreateSetting(Type tab, ConfigEntryBase configEntryBase) { - return new LocalToggleSetting(tab, configEntryBase, name, description); + return new LocalToggleSetting(tab, configEntryBase, _name, _description); } } diff --git a/MiraAPI/MiraApiSettings.cs b/MiraAPI/MiraApiSettings.cs index 30144112..55b5913b 100644 --- a/MiraAPI/MiraApiSettings.cs +++ b/MiraAPI/MiraApiSettings.cs @@ -25,4 +25,10 @@ public class MiraApiSettings(ConfigFile config) : LocalSettingsTab(config) /// [LocalToggleSetting] public ConfigEntry ModifiersHudLeftSide { get; private set; } = config.Bind("Displays", "Show Modifiers HUD on Left Side", false); + + /// + /// Gets whether to show keybinds in the control mapper. + /// + [LocalToggleSetting] + public ConfigEntry ShowKeybinds { get; private set; } = config.Bind("Keybinds", "Show Keybinds in Control Mapper", true); } diff --git a/MiraAPI/Patches/HudManagerPatches.cs b/MiraAPI/Patches/HudManagerPatches.cs index b1ec33a6..a06e170f 100644 --- a/MiraAPI/Patches/HudManagerPatches.cs +++ b/MiraAPI/Patches/HudManagerPatches.cs @@ -3,6 +3,7 @@ using System.Linq; using HarmonyLib; using MiraAPI.Hud; using MiraAPI.Keybinds; +using MiraAPI.LocalSettings; using MiraAPI.Utilities; using Reactor.Utilities; using Reactor.Utilities.Extensions; @@ -165,7 +166,7 @@ public static class HudManagerPatches { btnIcon.Key.text = KeybindUtils.GetKeycodeByActionId(btnIcon.Value).ToString(); btnIcon.Key.transform.parent.gameObject.SetActive(ActiveInputManager.currentControlType == ActiveInputManager.InputType.Keyboard && - PluginSingleton.Instance.MiraConfig!.ShowKeybinds.Value); + LocalSettingsTabSingleton.Instance.ShowKeybinds.Value); } foreach (var entry in KeybindManager.Keybinds) diff --git a/MiraAPI/Patches/Keybinds/ControlMapperPatches.cs b/MiraAPI/Patches/Keybinds/ControlMapperPatches.cs index 4a5fe90c..ae467340 100644 --- a/MiraAPI/Patches/Keybinds/ControlMapperPatches.cs +++ b/MiraAPI/Patches/Keybinds/ControlMapperPatches.cs @@ -1,6 +1,7 @@ using System.Linq; using HarmonyLib; using MiraAPI.Keybinds; +using MiraAPI.LocalSettings; using Reactor.Utilities; using Reactor.Utilities.Extensions; using Rewired.UI.ControlMapper; @@ -26,7 +27,7 @@ public static class ControlMapperPatches var toggle = Object.Instantiate(doneButton, doneButton.transform.parent); var text = toggle.GetComponentInChildren(); - var entry = PluginSingleton.Instance!.MiraConfig!.ShowKeybinds; + var entry = LocalSettingsTabSingleton.Instance.ShowKeybinds; toggle.gameObject.name = "KeybindsVisibleToggle"; text.text = $"Show Keybinds: {(entry.Value ? "On" : "Off")}"; toggle.onClick.RemoveAllListeners(); diff --git a/MiraAPI/Utilities/Assets/MiraAssets.cs b/MiraAPI/Utilities/Assets/MiraAssets.cs index ddbf354e..1e39c284 100644 --- a/MiraAPI/Utilities/Assets/MiraAssets.cs +++ b/MiraAPI/Utilities/Assets/MiraAssets.cs @@ -69,7 +69,7 @@ public static class MiraAssets /// Gets the Next Button sprite. /// public static LoadableResourceAsset NextButton { get; } = new("MiraAPI.Resources.NextButton.png"); - + /// /// Gets the Mira settings icon.. /// diff --git a/MiraAPI/Utilities/Helpers.cs b/MiraAPI/Utilities/Helpers.cs index 6a00751a..416cd283 100644 --- a/MiraAPI/Utilities/Helpers.cs +++ b/MiraAPI/Utilities/Helpers.cs @@ -476,25 +476,6 @@ public static class Helpers .Select(s => s[UnityEngine.Random.RandomRangeInt(0, s.Length)]).ToArray()); } - /// - /// Finds and returns an unused KeyCode that is not equal to the excluded key. - /// - /// The KeyCode to skip during the search. - /// - /// The first available KeyCode not currently used by any registered keybind, - /// or KeyCode.None if none are available. - /// - public static KeyboardKeyCode FindAvailableKey(KeyboardKeyCode exclude) - { - foreach (KeyboardKeyCode key in Enum.GetValues(typeof(KeyboardKeyCode))) - { - if (key == exclude) continue; - bool used = KeybindManager.GetEntries().Exists(e => e.Key == key); - if (!used) return key; - } - return KeyboardKeyCode.None; - } - /// /// Returns the formated value using the specified suffix and format string. ///