From e53b2f2ab0ef24298e3bb511367b344b88a4a4c0 Mon Sep 17 00:00:00 2001 From: truebrain Date: Mon, 19 Dec 2011 20:57:43 +0000 Subject: (svn r23616) -Add: ScriptGameSettings::SetValue, to set gamesettings (GameScript only) --- src/script/api/script_gamesettings.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/script/api/script_gamesettings.cpp') diff --git a/src/script/api/script_gamesettings.cpp b/src/script/api/script_gamesettings.cpp index 839486b8b..928ec9a96 100644 --- a/src/script/api/script_gamesettings.cpp +++ b/src/script/api/script_gamesettings.cpp @@ -12,6 +12,7 @@ #include "../../stdafx.h" #include "script_gamesettings.hpp" #include "../../settings_internal.h" +#include "../../command_type.h" /* static */ bool ScriptGameSettings::IsValid(const char *setting) { @@ -24,8 +25,8 @@ { if (!IsValid(setting)) return -1; - uint i; - const SettingDesc *sd = GetSettingFromName(setting, &i); + uint index; + const SettingDesc *sd = GetSettingFromName(setting, &index); void *ptr = GetVariableAddress(&_settings_game, &sd->save); if (sd->desc.cmd == SDT_BOOLX) return *(bool*)ptr; @@ -33,6 +34,19 @@ return (int32)ReadValue(ptr, sd->save.conv); } +/* static */ bool ScriptGameSettings::SetValue(const char *setting, int value) +{ + if (!IsValid(setting)) return false; + + uint index; + const SettingDesc *sd = GetSettingFromName(setting, &index); + + if ((sd->save.conv & SLF_NO_NETWORK_SYNC) != 0) return false; + if (sd->desc.cmd != SDT_BOOLX && sd->desc.cmd != SDT_NUMX) return false; + + return ScriptObject::DoCommand(0, index, value, CMD_CHANGE_SETTING); +} + /* static */ bool ScriptGameSettings::IsDisabledVehicleType(ScriptVehicle::VehicleType vehicle_type) { switch (vehicle_type) { -- cgit v1.2.3-54-g00ecf