Index: ps/trunk/binaries/data/mods/mod/gui/common/terms.js =================================================================== --- ps/trunk/binaries/data/mods/mod/gui/common/terms.js +++ ps/trunk/binaries/data/mods/mod/gui/common/terms.js @@ -21,10 +21,7 @@ function acceptTerms(data) { g_Terms[data.page].accepted = data.accepted; - - let value = data.accepted ? getTermsHash(data.page) : "0"; - Engine.ConfigDB_CreateValue("user", g_Terms[data.page].config, value); - Engine.ConfigDB_WriteValueToFile("user", g_Terms[data.page].config, value, "config/user.cfg"); + Engine.ConfigDB_CreateAndWriteValueToFile("user", g_Terms[data.page].config, data.accepted ? getTermsHash(data.page) : "0", "config/user.cfg"); if (g_Terms[data.page].callback) g_Terms[data.page].callback(data); Index: ps/trunk/binaries/data/mods/public/gui/common/functions_utility.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/common/functions_utility.js +++ ps/trunk/binaries/data/mods/public/gui/common/functions_utility.js @@ -9,15 +9,6 @@ }; /** - * Save setting for current instance and write setting to the user config file. - */ -function saveSettingAndWriteToUserConfig(setting, value) -{ - Engine.ConfigDB_CreateValue("user", setting, value); - Engine.ConfigDB_WriteValueToFile("user", setting, value, "config/user.cfg"); -} - -/** * Returns translated history and gameplay data of all civs, optionally including a mock gaia civ. */ function loadCivData(selectableOnly, gaia) Index: ps/trunk/binaries/data/mods/public/gui/gamesetup/gamesetup.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/gamesetup/gamesetup.js +++ ps/trunk/binaries/data/mods/public/gui/gamesetup/gamesetup.js @@ -1141,7 +1141,7 @@ // Replace empty playername when entering a singleplayermatch for the first time if (!g_IsNetworked) - saveSettingAndWriteToUserConfig("playername.singleplayer", singleplayerName()); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "playername.singleplayer", singleplayerName(), "config/user.cfg"); initDefaults(); supplementDefaults(); Index: ps/trunk/binaries/data/mods/public/gui/gamesetup/gamesetup.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/gamesetup/gamesetup.xml +++ ps/trunk/binaries/data/mods/public/gui/gamesetup/gamesetup.xml @@ -125,7 +125,7 @@ Show this message in the future. - saveSettingAndWriteToUserConfig("gui.gamesetup.enabletips", String(this.checked)); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "gui.gamesetup.enabletips", String(this.checked), "config/user.cfg"); Index: ps/trunk/binaries/data/mods/public/gui/gamesetup_mp/gamesetup_mp.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/gamesetup_mp/gamesetup_mp.js +++ ps/trunk/binaries/data/mods/public/gui/gamesetup_mp/gamesetup_mp.js @@ -284,9 +284,9 @@ { startConnectionStatus("server"); - saveSettingAndWriteToUserConfig("playername.multiplayer", playername); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "playername.multiplayer", playername, "config/user.cfg"); - saveSettingAndWriteToUserConfig("multiplayerhosting.port", port); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "multiplayerhosting.port", port, "config/user.cfg"); let hostFeedback = Engine.GetGUIObjectByName("hostFeedback"); @@ -361,9 +361,9 @@ else { // Only save the player name and host address if they're valid and we're not in the lobby - saveSettingAndWriteToUserConfig("playername.multiplayer", playername); - saveSettingAndWriteToUserConfig("multiplayerserver", ip); - saveSettingAndWriteToUserConfig("multiplayerjoining.port", port); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "playername.multiplayer", playername, "config/user.cfg"); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "multiplayerserver", ip, "config/user.cfg"); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "multiplayerjoining.port", port, "config/user.cfg"); } return true; } Index: ps/trunk/binaries/data/mods/public/gui/gamesetup_mp/gamesetup_mp.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/gamesetup_mp/gamesetup_mp.xml +++ ps/trunk/binaries/data/mods/public/gui/gamesetup_mp/gamesetup_mp.xml @@ -108,7 +108,7 @@ - saveSettingAndWriteToUserConfig("lobby.stun.enabled", String(this.checked)); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "lobby.stun.enabled", String(this.checked), "config/user.cfg"); Use STUN to work around firewalls Index: ps/trunk/binaries/data/mods/public/gui/lobby/lobby.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/lobby/lobby.js +++ ps/trunk/binaries/data/mods/public/gui/lobby/lobby.js @@ -784,7 +784,7 @@ updateToggleBuddy(); - saveSettingAndWriteToUserConfig("lobby.buddies", g_Buddies.filter(nick => nick).join(g_BuddyListDelimiter) || g_BuddyListDelimiter); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "lobby.buddies", g_Buddies.filter(nick => nick).join(g_BuddyListDelimiter) || g_BuddyListDelimiter, "config/user.cfg"); updatePlayerList(); updateGameList(); Index: ps/trunk/binaries/data/mods/public/gui/prelobby/common/credentials/credentials.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/prelobby/common/credentials/credentials.js +++ ps/trunk/binaries/data/mods/public/gui/prelobby/common/credentials/credentials.js @@ -56,10 +56,10 @@ [translate("No"), translate("Yes")], [ () => { checkbox.checked = true; }, - () => { saveSettingAndWriteToUserConfig("lobby.rememberpassword", String(!enabled)); } + () => { Engine.ConfigDB_CreateAndWriteValueToFile("user", "lobby.rememberpassword", String(!enabled), "config/user.cfg"); } ]); else - saveSettingAndWriteToUserConfig("lobby.rememberpassword", String(!enabled)); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "lobby.rememberpassword", String(!enabled), "config/user.cfg"); } function getEncryptedPassword() @@ -78,11 +78,11 @@ function saveCredentials() { let username = Engine.GetGUIObjectByName("username").caption; - saveSettingAndWriteToUserConfig("playername.multiplayer", username); - saveSettingAndWriteToUserConfig("lobby.login", username); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "playername.multiplayer", username, "config/user.cfg"); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "lobby.login", username, "config/user.cfg"); if (Engine.ConfigDB_GetValue("user", "lobby.rememberpassword") == "true") - saveSettingAndWriteToUserConfig("lobby.password", getEncryptedPassword()); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "lobby.password", getEncryptedPassword(), "config/user.cfg"); else { Engine.ConfigDB_RemoveValue("user", "lobby.password"); Index: ps/trunk/binaries/data/mods/public/gui/session/menu.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/session/menu.js +++ ps/trunk/binaries/data/mods/public/gui/session/menu.js @@ -357,7 +357,7 @@ function onToggleChatWindowExtended() { - saveSettingAndWriteToUserConfig("chat.session.extended", String(Engine.GetGUIObjectByName("extendedChat").checked)); + Engine.ConfigDB_CreateAndWriteValueToFile("user", "chat.session.extended", String(Engine.GetGUIObjectByName("extendedChat").checked), "config/user.cfg"); resizeChatWindow(); Index: ps/trunk/binaries/data/mods/public/gui/session/session.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/session/session.js +++ ps/trunk/binaries/data/mods/public/gui/session/session.js @@ -960,6 +960,11 @@ g_DeveloperOverlay.update(); } +function saveResPopTooltipSort() +{ + Engine.ConfigDB_CreateAndWriteValueToFile("user", "gui.session.respoptooltipsort", String((+Engine.ConfigDB_GetValue("user", "gui.session.respoptooltipsort") + 2) % 3 - 1), "config/user.cfg"); +} + function onReplayFinished() { closeOpenDialogs(); @@ -1333,7 +1338,7 @@ function toggleConfigBool(configName) { let enabled = Engine.ConfigDB_GetValue("user", configName) != "true"; - saveSettingAndWriteToUserConfig(configName, String(enabled)); + Engine.ConfigDB_CreateAndWriteValueToFile("user", configName, String(enabled), "config/user.cfg"); return enabled; } Index: ps/trunk/binaries/data/mods/public/gui/session/top_panel/resource_population.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/session/top_panel/resource_population.xml +++ ps/trunk/binaries/data/mods/public/gui/session/top_panel/resource_population.xml @@ -4,7 +4,7 @@ - saveSettingAndWriteToUserConfig("gui.session.respoptooltipsort", (+Engine.ConfigDB_GetValue("user", "gui.session.respoptooltipsort") + 2) % 3 - 1); + saveResPopTooltipSort(); updatePlayerDisplay(); Index: ps/trunk/binaries/data/mods/public/gui/session/top_panel/resources.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/session/top_panel/resources.xml +++ ps/trunk/binaries/data/mods/public/gui/session/top_panel/resources.xml @@ -6,7 +6,7 @@ - saveSettingAndWriteToUserConfig("gui.session.respoptooltipsort", (+Engine.ConfigDB_GetValue("user", "gui.session.respoptooltipsort") + 2) % 3 - 1); + saveResPopTooltipSort(); updatePlayerDisplay(); Index: ps/trunk/binaries/data/mods/public/gui/splashscreen/splashscreen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/splashscreen/splashscreen.xml +++ ps/trunk/binaries/data/mods/public/gui/splashscreen/splashscreen.xml @@ -28,8 +28,8 @@ OK Index: ps/trunk/source/ps/scripting/JSInterface_ConfigDB.h =================================================================== --- ps/trunk/source/ps/scripting/JSInterface_ConfigDB.h +++ ps/trunk/source/ps/scripting/JSInterface_ConfigDB.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018 Wildfire Games. +/* Copyright (C) 2019 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -34,6 +34,7 @@ bool RemoveValue(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const std::string& name); bool WriteFile(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const Path& path); bool WriteValueToFile(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const std::string& name, const std::string& value, const Path& path); + void CreateAndWriteValueToFile(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const std::string& name, const std::string& value, const Path& path); bool Reload(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString); bool SetFile(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const Path& path); void RegisterScriptFunctions(const ScriptInterface& scriptInterface); Index: ps/trunk/source/ps/scripting/JSInterface_ConfigDB.cpp =================================================================== --- ps/trunk/source/ps/scripting/JSInterface_ConfigDB.cpp +++ ps/trunk/source/ps/scripting/JSInterface_ConfigDB.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2018 Wildfire Games. +/* Copyright (C) 2019 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -140,6 +140,12 @@ return g_ConfigDB.WriteValueToFile(cfgNs, name, value, path); } +void JSI_ConfigDB::CreateAndWriteValueToFile(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const std::string& name, const std::string& value, const Path& path) +{ + CreateValue(pCxPrivate, cfgNsString, name, value); + WriteValueToFile(pCxPrivate, cfgNsString, name, value, path); +} + bool JSI_ConfigDB::Reload(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const std::wstring& cfgNsString) { EConfigNamespace cfgNs; @@ -168,6 +174,7 @@ scriptInterface.RegisterFunction("ConfigDB_RemoveValue"); scriptInterface.RegisterFunction("ConfigDB_WriteFile"); scriptInterface.RegisterFunction("ConfigDB_WriteValueToFile"); + scriptInterface.RegisterFunction("ConfigDB_CreateAndWriteValueToFile"); scriptInterface.RegisterFunction("ConfigDB_SetFile"); scriptInterface.RegisterFunction("ConfigDB_Reload"); }