settings,configuration: Add a default suffix

This commit is contained in:
lat9nq 2023-06-21 05:04:21 -04:00
parent 9de50d6194
commit 926f3e3d3e
9 changed files with 93 additions and 74 deletions

View file

@ -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};

View file

@ -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;
}

View file

@ -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
};

View file

@ -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>{