mirror of
https://github.com/N64Recomp/N64ModernRuntime.git
synced 2025-10-30 08:02:29 +00:00
backwards compat bool options from enum options with allowing some string variants
This commit is contained in:
parent
d46ed007a5
commit
995cdf2ad4
3 changed files with 34 additions and 1 deletions
|
|
@ -15,6 +15,9 @@
|
||||||
|
|
||||||
namespace recomp {
|
namespace recomp {
|
||||||
namespace config {
|
namespace config {
|
||||||
|
|
||||||
|
bool check_config_option_bool_string(const std::string& str);
|
||||||
|
|
||||||
enum class ConfigOptionType {
|
enum class ConfigOptionType {
|
||||||
None,
|
None,
|
||||||
Enum,
|
Enum,
|
||||||
|
|
|
||||||
|
|
@ -485,6 +485,10 @@ ConfigValueVariant Config::parse_config_option_json_value(const nlohmann::json&
|
||||||
return std::get<ConfigOptionBool>(option.variant).default_value;
|
return std::get<ConfigOptionBool>(option.variant).default_value;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (json_value.is_string()) {
|
||||||
|
std::string str_val = json_value.get<std::string>();
|
||||||
|
return check_config_option_bool_string(str_val);
|
||||||
|
}
|
||||||
return json_value.get<bool>();
|
return json_value.get<bool>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -662,7 +666,7 @@ std::string Config::get_enum_option_details(size_t option_index) const {
|
||||||
if (!enum_option_details.contains(option_index)) {
|
if (!enum_option_details.contains(option_index)) {
|
||||||
return std::string();
|
return std::string();
|
||||||
}
|
}
|
||||||
return enum_option_details[option_index];
|
return enum_option_details.at(option_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Config::is_config_option_hidden(size_t option_index) const {
|
bool Config::is_config_option_hidden(size_t option_index) const {
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,32 @@ static bool case_insensitive_compare(const std::string& a, const std::string& b)
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace recomp::config {
|
namespace recomp::config {
|
||||||
|
bool check_config_option_bool_string(const std::string& str) {
|
||||||
|
static const std::string false_strings[] = {
|
||||||
|
"false",
|
||||||
|
"off",
|
||||||
|
"no",
|
||||||
|
};
|
||||||
|
static const std::string true_strings[] = {
|
||||||
|
"true",
|
||||||
|
"on",
|
||||||
|
"yes",
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const auto& false_str : false_strings) {
|
||||||
|
if (case_insensitive_compare(str, false_str)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const auto& true_str : true_strings) {
|
||||||
|
if (case_insensitive_compare(str, true_str)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// ConfigOptionEnum
|
// ConfigOptionEnum
|
||||||
std::vector<ConfigOptionEnumOption>::const_iterator ConfigOptionEnum::find_option_from_string(const std::string& option_key) const {
|
std::vector<ConfigOptionEnumOption>::const_iterator ConfigOptionEnum::find_option_from_string(const std::string& option_key) const {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue