Turn Config::Info into a class with getters

This commit is contained in:
JosJuice committed 2020-12-11 19:54:16 +01:00
1 parent 11e8783893
commit b285991b88
12 files changed
+62 -53

No files matched your search

@@ -41,7 +41,7 @@ void SaveToSYSCONF(Config::LayerType layer)
{
std::visit(
[layer, &setting, &sysconf](auto& info) {
const std::string key = info.location.section + "." + info.location.key;
const std::string key = info.GetLocation().section + "." + info.GetLocation().key;
if (setting.type == SysConf::Entry::Type::Long)
{
@@ -180,27 +180,28 @@ private:
{
std::visit(
[&](auto& info) {
const std::string key = info.location.section + "." + info.location.key;
const Config::Location location = info.GetLocation();
const std::string key = location.section + "." + location.key;
if (setting.type == SysConf::Entry::Type::Long)
{
layer->Set(info.location, sysconf.GetData<u32>(key, info.default_value));
layer->Set(location, sysconf.GetData<u32>(key, info.GetDefaultValue()));
}
else if (setting.type == SysConf::Entry::Type::Byte)
{
layer->Set(info.location, sysconf.GetData<u8>(key, info.default_value));
layer->Set(location, sysconf.GetData<u8>(key, info.GetDefaultValue()));
}
else if (setting.type == SysConf::Entry::Type::BigArray)
{
// Somewhat hacky support for IPL.SADR. The setting only stores the
// first 4 bytes even thought the SYSCONF entry is much bigger.
u32 value = info.default_value;
u32 value = info.GetDefaultValue();
SysConf::Entry* entry = sysconf.GetEntry(key);
if (entry)
{
std::memcpy(&value, entry->bytes.data(),
std::min(entry->bytes.size(), sizeof(u32)));
}
layer->Set(info.location, value);
layer->Set(location, value);
}
},
setting.config_info);
@@ -69,10 +69,10 @@ using INIToSectionMap = std::map<std::string, std::pair<Config::System, std::str
static const INIToLocationMap& GetINIToLocationMap()
{
static const INIToLocationMap ini_to_location = {
{{"Core", "ProgressiveScan"}, {Config::SYSCONF_PROGRESSIVE_SCAN.location}},
{{"Core", "PAL60"}, {Config::SYSCONF_PAL60.location}},
{{"Wii", "Widescreen"}, {Config::SYSCONF_WIDESCREEN.location}},
{{"Wii", "Language"}, {Config::SYSCONF_LANGUAGE.location}},
{{"Core", "ProgressiveScan"}, {Config::SYSCONF_PROGRESSIVE_SCAN.GetLocation()}},
{{"Core", "PAL60"}, {Config::SYSCONF_PAL60.GetLocation()}},
{{"Wii", "Widescreen"}, {Config::SYSCONF_WIDESCREEN.GetLocation()}},
{{"Wii", "Language"}, {Config::SYSCONF_LANGUAGE.GetLocation()}},
};
return ini_to_location;
}
@@ -36,32 +36,32 @@ bool IsSettingSaveable(const Config::Location& config_location)
static constexpr std::array<const Config::Location*, 17> s_setting_saveable = {
// Main.Core
&Config::MAIN_DEFAULT_ISO.location,
&Config::MAIN_MEMCARD_A_PATH.location,
&Config::MAIN_MEMCARD_B_PATH.location,
&Config::MAIN_AUTO_DISC_CHANGE.location,
&Config::MAIN_ALLOW_SD_WRITES.location,
&Config::MAIN_DPL2_DECODER.location,
&Config::MAIN_DPL2_QUALITY.location,
&Config::MAIN_RAM_OVERRIDE_ENABLE.location,
&Config::MAIN_MEM1_SIZE.location,
&Config::MAIN_MEM2_SIZE.location,
&Config::MAIN_GFX_BACKEND.location,
&Config::MAIN_ENABLE_SAVESTATES.location,
&Config::MAIN_FALLBACK_REGION.location,
&Config::MAIN_DEFAULT_ISO.GetLocation(),
&Config::MAIN_MEMCARD_A_PATH.GetLocation(),
&Config::MAIN_MEMCARD_B_PATH.GetLocation(),
&Config::MAIN_AUTO_DISC_CHANGE.GetLocation(),
&Config::MAIN_ALLOW_SD_WRITES.GetLocation(),
&Config::MAIN_DPL2_DECODER.GetLocation(),
&Config::MAIN_DPL2_QUALITY.GetLocation(),
&Config::MAIN_RAM_OVERRIDE_ENABLE.GetLocation(),
&Config::MAIN_MEM1_SIZE.GetLocation(),
&Config::MAIN_MEM2_SIZE.GetLocation(),
&Config::MAIN_GFX_BACKEND.GetLocation(),
&Config::MAIN_ENABLE_SAVESTATES.GetLocation(),
&Config::MAIN_FALLBACK_REGION.GetLocation(),
// Main.Interface
&Config::MAIN_USE_PANIC_HANDLERS.location,
&Config::MAIN_OSD_MESSAGES.location,
&Config::MAIN_USE_PANIC_HANDLERS.GetLocation(),
&Config::MAIN_OSD_MESSAGES.GetLocation(),
// Main.Interface
&Config::MAIN_SKIP_NKIT_WARNING.location,
&Config::MAIN_SKIP_NKIT_WARNING.GetLocation(),
// UI.General
&Config::MAIN_USE_DISCORD_PRESENCE.location,
&Config::MAIN_USE_DISCORD_PRESENCE.GetLocation(),
};
return std::any_of(s_setting_saveable.cbegin(), s_setting_saveable.cend(),