Add setting flag to enable bool -> int config file load conversion
This commit is contained in:
@@ -409,6 +409,10 @@ size_t IntSettingDesc::ParseValue(const char *str) const
|
|||||||
char *end;
|
char *end;
|
||||||
size_t val = strtoul(str, &end, 0);
|
size_t val = strtoul(str, &end, 0);
|
||||||
if (end == str) {
|
if (end == str) {
|
||||||
|
if (this->flags & SF_CONVERT_BOOL_TO_INT) {
|
||||||
|
if (strcmp(str, "true") == 0 || strcmp(str, "on") == 0) return 1;
|
||||||
|
if (strcmp(str, "false") == 0 || strcmp(str, "off") == 0) return 0;
|
||||||
|
}
|
||||||
ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_VALUE);
|
ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_VALUE);
|
||||||
msg.SetDParamStr(0, str);
|
msg.SetDParamStr(0, str);
|
||||||
msg.SetDParamStr(1, this->name);
|
msg.SetDParamStr(1, this->name);
|
||||||
|
@@ -35,6 +35,7 @@ enum SettingFlag : uint32 {
|
|||||||
SF_GUI_VELOCITY = 1 << 18, ///< setting value is a velocity
|
SF_GUI_VELOCITY = 1 << 18, ///< setting value is a velocity
|
||||||
SF_GUI_ADVISE_DEFAULT = 1 << 19, ///< Advise the user to leave this setting at its default value
|
SF_GUI_ADVISE_DEFAULT = 1 << 19, ///< Advise the user to leave this setting at its default value
|
||||||
SF_ENUM_PRE_CB_VALIDATE = 1 << 20, ///< Call the pre_check callback for enum incoming value validation
|
SF_ENUM_PRE_CB_VALIDATE = 1 << 20, ///< Call the pre_check callback for enum incoming value validation
|
||||||
|
SF_CONVERT_BOOL_TO_INT = 1 << 21, ///< Accept a boolean value when loading an int-type setting from the config file
|
||||||
};
|
};
|
||||||
DECLARE_ENUM_AS_BIT_SET(SettingFlag)
|
DECLARE_ENUM_AS_BIT_SET(SettingFlag)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user