From 8b2d24ccc103da68f2d2e3cf22ee33ce0bedd9d7 Mon Sep 17 00:00:00 2001 From: xChipseq Date: Mon, 1 Sep 2025 22:22:32 +0200 Subject: [PATCH] more stuff --- MiraAPI.Example/ExampleLocalSetings.cs | 59 +++++-------------- .../Attributes/LocalSliderSettingAttribute.cs | 3 +- ...bute.cs => LocalToggleSettingAttribute.cs} | 2 +- .../SettingTypes/LocalEnumSetting.cs | 8 ++- .../SettingTypes/LocalNumberSetting.cs | 1 + .../SettingTypes/LocalSettingBase.cs | 2 +- .../SettingTypes/LocalSliderSetting.cs | 26 +++++--- MiraAPI/MiraApiSettings.cs | 2 +- 8 files changed, 46 insertions(+), 57 deletions(-) rename MiraAPI/LocalSettings/Attributes/{LocalSettingToggleAttribute.cs => LocalToggleSettingAttribute.cs} (93%) diff --git a/MiraAPI.Example/ExampleLocalSetings.cs b/MiraAPI.Example/ExampleLocalSetings.cs index da7e4f5..258a970 100644 --- a/MiraAPI.Example/ExampleLocalSetings.cs +++ b/MiraAPI.Example/ExampleLocalSetings.cs @@ -10,68 +10,37 @@ namespace MiraAPI.Example; public class ExampleLocalSettings(ConfigFile config) : LocalSettingsTab(config) { public override string TabName => "Mira Example"; + protected override bool ShouldCreateLabels => false; + public override LocalSettingTabAppearance TabAppearance => new() { TabColor = Color.cyan, ToggleActiveColor = Color.blue, ToggleInactiveColor = Color.red, - SliderHoverColor = Color.magenta, }; - [LocalSliderSetting(min: 0, max: 15, suffixType: MiraNumberSuffixes.Multiplier)] - public ConfigEntry ExampleFloatEntry { get; private set; } = config.Bind("General", "Example Float Setting", 50f); + [LocalToggleSetting] + public ConfigEntry ExampleToggle { get; private set; } = config.Bind("General", "Example Bool", true); - [LocalSettingToggle] - public ConfigEntry PlayStartupSound { get; private set; } = config.Bind("Audio", "Play Startup Sound", true); + [LocalToggleSetting] + public ConfigEntry ExampleToggle2 { get; private set; } = config.Bind("General", "Example Bool 2", false); - [LocalSettingToggle] - public ConfigEntry MuteInBackground { get; private set; } = config.Bind("Audio", "Mute In Background", false); + [LocalSliderSetting(suffixType: MiraNumberSuffixes.Percent, formatString: "0", roundValue: true)] + public ConfigEntry ExampleSlider { get; private set; } = config.Bind("General", "Slider", 50f); - [LocalSettingToggle] - public ConfigEntry AutoSaveEnabled { get; private set; } = config.Bind("General", "Auto Save Enabled", true); - - [LocalSettingToggle] - public ConfigEntry EnableCloudSync { get; private set; } = config.Bind("General", "Enable Cloud Sync", false); - - [LocalSettingToggle] - public ConfigEntry ShowAdvancedTooltips { get; private set; } = config.Bind("UI", "Show Advanced Tooltips", true); - - [LocalSettingToggle] - public ConfigEntry CompactUI { get; private set; } = config.Bind("UI", "Compact UI Layout", false); - - [LocalSettingToggle] - public ConfigEntry EnableControllerSupport { get; private set; } = config.Bind("Input", "Enable Controller Support", true); - - [LocalSettingToggle] - public ConfigEntry EnableVibration { get; private set; } = config.Bind("Input", "Enable Controller Vibration", true); - - [LocalSettingToggle] - public ConfigEntry ShowPlayerNames { get; private set; } = config.Bind("Gameplay", "Show Player Names", true); - - [LocalSettingToggle] - public ConfigEntry EnableHardMode { get; private set; } = config.Bind("Gameplay", "Enable Hard Mode", false); - [LocalSettingToggle] - public ConfigEntry EnableHardMode2 { get; private set; } = config.Bind("Gameplay", "Enable Hard Mode", false); - [LocalSettingToggle] - public ConfigEntry EnableHardMode3 { get; private set; } = config.Bind("Gameplay", "Enable Hard Mode", false); - [LocalSettingToggle] - public ConfigEntry EnableHardMode4 { get; private set; } = config.Bind("Gameplay", "Enable Hard Mode", false); - [LocalSettingToggle] - public ConfigEntry EnableHardMode5 { get; private set; } = config.Bind("Gameplay", "Enable Hard Mode", false); - - [LocalNumberSetting] - public ConfigEntry NumberExample { get; private set; } = config.Bind("Gameplay", "Number of cheeseburgers", 3); + [LocalNumberSetting(suffixType: MiraNumberSuffixes.Seconds)] + public ConfigEntry ExampleNumber { get; private set; } = config.Bind("General", "Example Number", 4); [LocalEnumSetting] - public ConfigEntry EnumExample { get; private set; } = config.Bind("Gameplay", "Anything else", ExampleSettingEnum.Fries); + public ConfigEntry ExampleEnum { get; private set; } = config.Bind("General", "Example Enum", ExampleEnumSetting.Fries); } -public enum ExampleSettingEnum +public enum ExampleEnumSetting { + Cheeseburger, + Sandwich, Fries, - OnionRings, ChickenNuggets, - Gun, } public class Tab1(ConfigFile config) : LocalSettingsTab(config) { public override string TabName => "Tab"; public override LocalSettingTabAppearance TabAppearance => new(); } diff --git a/MiraAPI/LocalSettings/Attributes/LocalSliderSettingAttribute.cs b/MiraAPI/LocalSettings/Attributes/LocalSliderSettingAttribute.cs index 53555fa..4a211d5 100644 --- a/MiraAPI/LocalSettings/Attributes/LocalSliderSettingAttribute.cs +++ b/MiraAPI/LocalSettings/Attributes/LocalSliderSettingAttribute.cs @@ -19,6 +19,7 @@ public class LocalSliderSettingAttribute( float min = 0, float max = 100, string? description = null, + bool displayValue = false, string? formatString = null, bool roundValue = false, MiraNumberSuffixes suffixType = MiraNumberSuffixes.None @@ -27,6 +28,6 @@ public class LocalSliderSettingAttribute( /// internal override LocalSliderSetting CreateSetting(Type tab, ConfigEntryBase configEntryBase) { - return new LocalSliderSetting(tab, configEntryBase, name, description, new FloatRange(min, max), suffixType, formatString, roundValue); + return new LocalSliderSetting(tab, configEntryBase, name, description, new FloatRange(min, max), displayValue, suffixType, formatString, roundValue); } } diff --git a/MiraAPI/LocalSettings/Attributes/LocalSettingToggleAttribute.cs b/MiraAPI/LocalSettings/Attributes/LocalToggleSettingAttribute.cs similarity index 93% rename from MiraAPI/LocalSettings/Attributes/LocalSettingToggleAttribute.cs rename to MiraAPI/LocalSettings/Attributes/LocalToggleSettingAttribute.cs index 2add91d..31c9b09 100644 --- a/MiraAPI/LocalSettings/Attributes/LocalSettingToggleAttribute.cs +++ b/MiraAPI/LocalSettings/Attributes/LocalToggleSettingAttribute.cs @@ -9,7 +9,7 @@ namespace MiraAPI.LocalSettings.Attributes; /// /// [AttributeUsage(AttributeTargets.Property)] -public class LocalSettingToggleAttribute( +public class LocalToggleSettingAttribute( string? name = null, string? description = null ) : LocalSettingAttribute(name, description) diff --git a/MiraAPI/LocalSettings/SettingTypes/LocalEnumSetting.cs b/MiraAPI/LocalSettings/SettingTypes/LocalEnumSetting.cs index c435a58..437eed1 100644 --- a/MiraAPI/LocalSettings/SettingTypes/LocalEnumSetting.cs +++ b/MiraAPI/LocalSettings/SettingTypes/LocalEnumSetting.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using BepInEx.Configuration; using MiraAPI.Utilities; using Reactor.Utilities.Extensions; @@ -40,7 +41,11 @@ public class LocalEnumSetting : LocalSettingBase : base(tab, configEntry, name, description) { EnumType = enumType; - Values = values ?? Enum.GetNames(EnumType); + Values = values ?? Enum + .GetValues(configEntry.SettingType) + .Cast() + .Select(x => x.ToDisplayString()) + .ToArray(); } /// @@ -58,6 +63,7 @@ public class LocalEnumSetting : LocalSettingBase if (highlight != null) { highlight.color = Tab!.TabAppearance.EnumHoverColor; + highlight.gameObject.SetActive(false); } toggleComp.Destroy(); diff --git a/MiraAPI/LocalSettings/SettingTypes/LocalNumberSetting.cs b/MiraAPI/LocalSettings/SettingTypes/LocalNumberSetting.cs index 1473889..70be2aa 100644 --- a/MiraAPI/LocalSettings/SettingTypes/LocalNumberSetting.cs +++ b/MiraAPI/LocalSettings/SettingTypes/LocalNumberSetting.cs @@ -74,6 +74,7 @@ public class LocalNumberSetting : LocalSettingBase if (highlight != null) { highlight.color = Tab!.TabAppearance.NumberHoverColor; + highlight.gameObject.SetActive(false); } toggleComp.Destroy(); diff --git a/MiraAPI/LocalSettings/SettingTypes/LocalSettingBase.cs b/MiraAPI/LocalSettings/SettingTypes/LocalSettingBase.cs index 934b33e..7d2bc5b 100644 --- a/MiraAPI/LocalSettings/SettingTypes/LocalSettingBase.cs +++ b/MiraAPI/LocalSettings/SettingTypes/LocalSettingBase.cs @@ -49,7 +49,7 @@ public abstract class LocalSettingBase : ILocalSetting /// The value text. protected virtual string GetValueText() { - return GetValue()?.ToString() ?? string.Empty; + return string.Empty; } /// diff --git a/MiraAPI/LocalSettings/SettingTypes/LocalSliderSetting.cs b/MiraAPI/LocalSettings/SettingTypes/LocalSliderSetting.cs index 8535baa..ae6f500 100644 --- a/MiraAPI/LocalSettings/SettingTypes/LocalSliderSetting.cs +++ b/MiraAPI/LocalSettings/SettingTypes/LocalSliderSetting.cs @@ -19,6 +19,11 @@ public class LocalSliderSetting : LocalSettingBase /// public FloatRange SliderRange { get; } + /// + /// Gets a value indicating whether the value should be displayed next to name. + /// + public bool DisplayValue { get; } + /// /// Gets a format for the text to use to format the number. /// @@ -48,15 +53,17 @@ public class LocalSliderSetting : LocalSettingBase string? name = null, string? description = null, FloatRange? sliderRange = null, + bool displayValue = false, MiraNumberSuffixes? suffixType = null, string? formatString = null, bool roundValue = false) : base(tab, configEntry, name, description) { - SuffixType = suffixType ?? MiraNumberSuffixes.None; SliderRange = sliderRange ?? new FloatRange(0, 100); - RoundValue = roundValue; + DisplayValue = displayValue; + SuffixType = suffixType ?? MiraNumberSuffixes.None; FormatString = formatString ?? "0.0"; + RoundValue = roundValue; } /// @@ -80,7 +87,7 @@ public class LocalSliderSetting : LocalSettingBase rollover.OutColor = Tab!.TabAppearance.SliderColor; rollover.OverColor = Tab!.TabAppearance.SliderHoverColor; newSlider.Title.transform.localPosition = new Vector3(0.5f, 0, -1f); - newSlider.Title.horizontalAlignment = HorizontalAlignmentOptions.Right; + newSlider.Title.horizontalAlignment = DisplayValue ? HorizontalAlignmentOptions.Left : HorizontalAlignmentOptions.Center; newSlider.Title.text = GetValueText(); newSlider.OnValueChange.AddListener((UnityAction)(() => @@ -100,9 +107,14 @@ public class LocalSliderSetting : LocalSettingBase /// protected override string GetValueText() { - var value = GetValue(); - var formated = Helpers.FormatValue(value, SuffixType, FormatString); - var maxFormated = Helpers.FormatValue(SliderRange.max, SuffixType, FormatString); - return $"{Name}: {formated} / {maxFormated}"; + if (DisplayValue) + { + var value = GetValue(); + var formated = Helpers.FormatValue(value, SuffixType, FormatString); + var maxFormated = Helpers.FormatValue(SliderRange.max, SuffixType, FormatString); + return $"{Name}: {formated} / {maxFormated}"; + } + + return $"{Name}"; } } diff --git a/MiraAPI/MiraApiSettings.cs b/MiraAPI/MiraApiSettings.cs index 4ff4d04..6a659f1 100644 --- a/MiraAPI/MiraApiSettings.cs +++ b/MiraAPI/MiraApiSettings.cs @@ -32,6 +32,6 @@ public class MiraApiSettings(ConfigFile config) : LocalSettingsTab(config) /// /// Gets whether the modifiers hud should be on the left side of the screen (under roles/task tab). Recommended for streamers. /// - [LocalSettingToggle] + [LocalToggleSetting] public ConfigEntry ModifiersHudLeftSide { get; private set; } = config.Bind("Displays", "Show Modifiers HUD on Left Side", false); }