mirror of
https://gitlab.com/suyu-emu/suyu.git
synced 2024-03-15 23:15:44 +00:00
settings,uisettings: Add IDs to settings
This commit is contained in:
parent
f8435d676f
commit
bafd569b47
|
@ -191,6 +191,7 @@ public:
|
||||||
virtual bool IsEnum() const = 0;
|
virtual bool IsEnum() const = 0;
|
||||||
virtual bool RuntimeModfiable() const = 0;
|
virtual bool RuntimeModfiable() const = 0;
|
||||||
virtual void SetGlobal(bool global) {}
|
virtual void SetGlobal(bool global) {}
|
||||||
|
virtual u32 Id() const = 0;
|
||||||
virtual bool UsingGlobal() const {
|
virtual bool UsingGlobal() const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -200,6 +201,7 @@ class Linkage {
|
||||||
public:
|
public:
|
||||||
std::map<Category, std::forward_list<BasicSetting*>> by_category;
|
std::map<Category, std::forward_list<BasicSetting*>> by_category;
|
||||||
std::vector<std::function<void()>> restore_functions;
|
std::vector<std::function<void()>> restore_functions;
|
||||||
|
u32 count;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** The Setting class is a simple resource manager. It defines a label and default value
|
/** The Setting class is a simple resource manager. It defines a label and default value
|
||||||
|
@ -232,8 +234,10 @@ public:
|
||||||
explicit Setting(Linkage& linkage, const Type& default_val, const std::string& name,
|
explicit Setting(Linkage& linkage, const Type& default_val, const std::string& name,
|
||||||
enum Category category_)
|
enum Category category_)
|
||||||
requires(!ranged)
|
requires(!ranged)
|
||||||
: value{default_val}, default_value{default_val}, label{name}, category{category_} {
|
: value{default_val},
|
||||||
|
default_value{default_val}, label{name}, category{category_}, id{linkage.count} {
|
||||||
linkage.by_category[category].push_front(this);
|
linkage.by_category[category].push_front(this);
|
||||||
|
linkage.count++;
|
||||||
}
|
}
|
||||||
virtual ~Setting() = default;
|
virtual ~Setting() = default;
|
||||||
|
|
||||||
|
@ -251,8 +255,9 @@ public:
|
||||||
const Type& max_val, const std::string& name, enum Category category_)
|
const Type& max_val, const std::string& name, enum Category category_)
|
||||||
requires(ranged)
|
requires(ranged)
|
||||||
: value{default_val}, default_value{default_val}, maximum{max_val}, minimum{min_val},
|
: value{default_val}, default_value{default_val}, maximum{max_val}, minimum{min_val},
|
||||||
label{name}, category{category_} {
|
label{name}, category{category_}, id{linkage.count} {
|
||||||
linkage.by_category[category].push_front(this);
|
linkage.by_category[category].push_front(this);
|
||||||
|
linkage.count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -418,6 +423,10 @@ public:
|
||||||
return std::type_index(typeid(Type));
|
return std::type_index(typeid(Type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual u32 Id() const override {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Type value{}; ///< The setting
|
Type value{}; ///< The setting
|
||||||
const Type default_value{}; ///< The default value
|
const Type default_value{}; ///< The default value
|
||||||
|
@ -425,6 +434,7 @@ protected:
|
||||||
const Type minimum{}; ///< Minimum allowed value of the setting
|
const Type minimum{}; ///< Minimum allowed value of the setting
|
||||||
const std::string label{}; ///< The setting's label
|
const std::string label{}; ///< The setting's label
|
||||||
const enum Category category; ///< The setting's category AKA INI group
|
const enum Category category; ///< The setting's category AKA INI group
|
||||||
|
const u32 id;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -728,7 +738,7 @@ struct Values {
|
||||||
linkage, VSyncMode::FIFO, VSyncMode::Immediate, VSyncMode::FIFORelaxed,
|
linkage, VSyncMode::FIFO, VSyncMode::Immediate, VSyncMode::FIFORelaxed,
|
||||||
"use_vsync", Category::Renderer};
|
"use_vsync", Category::Renderer};
|
||||||
SwitchableSetting<bool> use_reactive_flushing{linkage, true, "use_reactive_flushing",
|
SwitchableSetting<bool> use_reactive_flushing{linkage, true, "use_reactive_flushing",
|
||||||
Category::Renderer};
|
Category::RendererAdvanced};
|
||||||
SwitchableSetting<ShaderBackend, true> shader_backend{
|
SwitchableSetting<ShaderBackend, true> shader_backend{
|
||||||
linkage, ShaderBackend::GLSL, ShaderBackend::GLSL, ShaderBackend::SPIRV,
|
linkage, ShaderBackend::GLSL, ShaderBackend::GLSL, ShaderBackend::SPIRV,
|
||||||
"shader_backend", Category::Renderer};
|
"shader_backend", Category::Renderer};
|
||||||
|
|
Loading…
Reference in a new issue