diff options
author | Rubidium <rubidium@openttd.org> | 2021-07-11 22:41:04 +0200 |
---|---|---|
committer | rubidium42 <rubidium42@users.noreply.github.com> | 2021-07-11 23:11:05 +0200 |
commit | c71f06e59b57f256ee8089f44bc8a5f14234db29 (patch) | |
tree | 1b89fda9c8aa13618119ed0015e16402ac24c2aa /src | |
parent | dd7f69be6ed6ea90ec806c86957f10332206bcd6 (diff) | |
download | openttd-c71f06e59b57f256ee8089f44bc8a5f14234db29.tar.xz |
Feature: parse the console settings the same way as config settings
Now you can use things like `set server_game_type public` instead of having to
guess the number, which would not be written into the configuration file nor
would it be shown when doing `set server_game_type`.
Diffstat (limited to 'src')
-rw-r--r-- | src/settings.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/settings.cpp b/src/settings.cpp index d7a855065..0d379778b 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1635,15 +1635,14 @@ void IConsoleSetSetting(const char *name, const char *value, bool force_newgame) if (sd->IsStringSetting()) { success = SetSettingValue(sd->AsStringSetting(), value, force_newgame); } else if (sd->IsIntSetting()) { - uint32 val; - extern bool GetArgumentInteger(uint32 *value, const char *arg); - success = GetArgumentInteger(&val, value); - if (!success) { - IConsolePrint(CC_ERROR, "'{}' is not an integer.", value); + const IntSettingDesc *isd = sd->AsIntSetting(); + size_t val = isd->ParseValue(value); + if (!_settings_error_list.empty()) { + IConsolePrint(CC_ERROR, "'{}' is not a valid value for this setting.", value); + _settings_error_list.clear(); return; } - - success = SetSettingValue(sd->AsIntSetting(), val, force_newgame); + success = SetSettingValue(isd, (int32)val, force_newgame); } if (!success) { |