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`.
This commit is contained in:
Rubidium 2021-07-11 22:41:04 +02:00 committed by rubidium42
parent dd7f69be6e
commit c71f06e59b
2 changed files with 7 additions and 8 deletions

View File

@ -117,7 +117,7 @@ Last updated: 2011-02-16
- If you want to be on the server-list, make your server public. You can do
this either from the Start Server GUI, via the in-game Online Players GUI,
or by typing in the console:
'set server_game_type 1'.
'set server_game_type public'.
- You can protect your server with a password via the console: 'set server_pw',
or via the Start Server menu.

View File

@ -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) {