diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/settings.h | 26 | ||||
-rw-r--r-- | src/common/settings_common.cpp | 6 | ||||
-rw-r--r-- | src/common/settings_common.h | 33 | ||||
-rw-r--r-- | src/common/settings_setting.h | 15 |
4 files changed, 48 insertions, 32 deletions
diff --git a/src/common/settings.h b/src/common/settings.h index b87301d4e..c4339cb1f 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -137,8 +137,15 @@ struct Values { SwitchableSetting<AudioMode, true> sound_index{linkage, AudioMode::Stereo, AudioMode::Mono, AudioMode::Surround, "sound_index", Category::SystemAudio}; - SwitchableSetting<u8, true> volume{ - linkage, 100, 0, 200, "volume", Category::Audio, Specialization::Scalar, true, true}; + SwitchableSetting<u8, true> volume{linkage, + 100, + 0, + 200, + "volume", + Category::Audio, + Specialization::Scalar | Specialization::Percentage, + true, + true}; Setting<bool, false> audio_muted{ linkage, false, "audio_muted", Category::Audio, Specialization::Default, false}; Setting<bool, false> dump_audio_commands{ @@ -156,7 +163,7 @@ struct Values { 9999, "speed_limit", Category::Core, - Specialization::Countable, + Specialization::Countable | Specialization::Percentage, true, true, &use_speed_limit}; @@ -268,9 +275,16 @@ struct Values { Specialization::Default, true, true}; - SwitchableSetting<int, true> fsr_sharpening_slider{ - linkage, 25, 0, 200, "fsr_sharpening_slider", Category::Renderer, Specialization::Scalar, - true, true}; + SwitchableSetting<int, true> fsr_sharpening_slider{linkage, + 25, + 0, + 200, + "fsr_sharpening_slider", + Category::Renderer, + Specialization::Scalar | + Specialization::Percentage, + true, + true}; SwitchableSetting<u8, false> bg_red{ linkage, 0, "bg_red", Category::Renderer, Specialization::Default, true, true}; diff --git a/src/common/settings_common.cpp b/src/common/settings_common.cpp index 53d4548f5..799942980 100644 --- a/src/common/settings_common.cpp +++ b/src/common/settings_common.cpp @@ -7,8 +7,8 @@ namespace Settings { BasicSetting::BasicSetting(Linkage& linkage, const std::string& name, enum Category category_, - bool save_, bool runtime_modifiable_, - enum Specialization specialization_, BasicSetting* other_setting_) + bool save_, bool runtime_modifiable_, u32 specialization_, + BasicSetting* other_setting_) : label{name}, category{category_}, id{linkage.count}, save{save_}, runtime_modifiable{runtime_modifiable_}, specialization{specialization_}, other_setting{other_setting_} { @@ -40,7 +40,7 @@ Category BasicSetting::Category() const { return category; } -Specialization BasicSetting::Specialization() const { +u32 BasicSetting::Specialization() const { return specialization; } diff --git a/src/common/settings_common.h b/src/common/settings_common.h index ad005ca4e..6b717deb1 100644 --- a/src/common/settings_common.h +++ b/src/common/settings_common.h @@ -43,15 +43,21 @@ enum class Category : u32 { MaxEnum, }; -enum class Specialization : u32 { - Default, - Time, - Hex, - List, - RuntimeList, - Scalar, - Countable, - Paired, +constexpr u8 SpecializationTypeMask = 0xf; +constexpr u8 SpecializationAttributeMask = 0xf0; +constexpr u8 SpecializationAttributeOffset = 4; + +enum Specialization : u8 { + Default = 0, + Time = 1, + Hex = 2, + List = 3, + RuntimeList = 4, + Scalar = 5, + Countable = 6, + Paired = 7, + + Percentage = (1 << SpecializationAttributeOffset), }; bool IsConfiguringGlobal(); @@ -75,7 +81,7 @@ public: class BasicSetting { protected: explicit BasicSetting(Linkage& linkage, const std::string& name, enum Category category_, - bool save_, bool runtime_modifiable_, Specialization spec, + bool save_, bool runtime_modifiable_, u32 specialization, BasicSetting* other_setting); public: @@ -195,7 +201,7 @@ public: /** * @returns Extra metadata for data representation in frontend implementations. */ - [[nodiscard]] enum Specialization Specialization() const; + [[nodiscard]] u32 Specialization() const; /** * @returns Another BasicSetting if one is paired, or nullptr otherwise. @@ -240,9 +246,8 @@ private: const u32 id; ///< Unique integer for the setting const bool save; ///< Suggests if the setting should be saved and read to a frontend config const bool - runtime_modifiable; ///< Suggests if the setting can be modified while a guest is running - const enum Specialization - specialization; ///< Extra data to identify representation of a setting + runtime_modifiable; ///< Suggests if the setting can be modified while a guest is running + const u32 specialization; ///< Extra data to identify representation of a setting BasicSetting* const other_setting; ///< A paired setting }; diff --git a/src/common/settings_setting.h b/src/common/settings_setting.h index dd91250a1..d1915cb43 100644 --- a/src/common/settings_setting.h +++ b/src/common/settings_setting.h @@ -35,8 +35,7 @@ public: * @param category_ Category of the setting AKA INI group */ explicit Setting(Linkage& linkage, const Type& default_val, const std::string& name, - enum Category category_, - enum Specialization specialization = Specialization::Default, + enum Category category_, u32 specialization = Specialization::Default, bool save_ = true, bool runtime_modifiable_ = false, BasicSetting* other_setting = nullptr) requires(!ranged) @@ -57,9 +56,8 @@ public: */ explicit Setting(Linkage& linkage, const Type& default_val, const Type& min_val, const Type& max_val, const std::string& name, enum Category category_, - enum Specialization specialization = Specialization::Default, - bool save_ = true, bool runtime_modifiable_ = false, - BasicSetting* other_setting = nullptr) + u32 specialization = Specialization::Default, bool save_ = true, + bool runtime_modifiable_ = false, BasicSetting* other_setting = nullptr) requires(ranged) : BasicSetting(linkage, name, category_, save_, runtime_modifiable_, specialization, other_setting), @@ -237,8 +235,7 @@ public: * @param category_ Category of the setting AKA INI group */ explicit SwitchableSetting(Linkage& linkage, const Type& default_val, const std::string& name, - Category category_, - enum Specialization specialization = Specialization::Default, + Category category_, u32 specialization = Specialization::Default, bool save_ = true, bool runtime_modifiable_ = false, BasicSetting* other_setting = nullptr) requires(!ranged) @@ -261,8 +258,8 @@ public: */ explicit SwitchableSetting(Linkage& linkage, const Type& default_val, const Type& min_val, const Type& max_val, const std::string& name, Category category_, - enum Specialization specialization = Specialization::Default, - bool save_ = true, bool runtime_modifiable_ = false, + u32 specialization = Specialization::Default, bool save_ = true, + bool runtime_modifiable_ = false, BasicSetting* other_setting = nullptr) requires(ranged) : Setting<Type, true>{ |