Ticket #3737: optionsReset-v3.2.patch
File optionsReset-v3.2.patch, 30.1 KB (added by , 8 years ago) |
---|
-
binaries/data/mods/public/gui/gamesetup/gamesetup_mp.js
193 193 { 194 194 // Save player name 195 195 Engine.ConfigDB_CreateValue("user", "playername", playername); 196 Engine.ConfigDB_Write File("user", "config/user.cfg");196 Engine.ConfigDB_WriteValueToFile("user", "playername", playername, "config/user.cfg"); 197 197 // Disallow identically named games in the multiplayer lobby 198 198 if (Engine.HasXmppClient()) 199 199 { … … 253 253 if (Engine.HasXmppClient()) 254 254 // Set player lobby presence 255 255 Engine.LobbySetPlayerPresence("playing"); 256 else { 256 else 257 { 257 258 // Only save the player name and host address if they're valid and we're not in the lobby 258 259 Engine.ConfigDB_CreateValue("user", "playername", playername); 260 Engine.ConfigDB_WriteValueToFile("user", "playername", playername, "config/user.cfg"); 259 261 Engine.ConfigDB_CreateValue("user", "multiplayerserver", ip); 260 Engine.ConfigDB_Write File("user", "config/user.cfg");262 Engine.ConfigDB_WriteValueToFile("user", "multiplayerserver", ip, "config/user.cfg"); 261 263 } 262 264 return true; 263 265 } -
binaries/data/mods/public/gui/lobby/prelobby.js
180 180 Engine.PopGuiPage(); 181 181 Engine.SwitchGuiPage("page_lobby.xml"); 182 182 Engine.ConfigDB_CreateValue("user", "playername", sanitizePlayerName(username, true, true)); 183 Engine.ConfigDB_WriteValueToFile("user", "playername", sanitizePlayerName(username, true, true), "config/user.cfg"); 183 184 Engine.ConfigDB_CreateValue("user", "lobby.login", username); 185 Engine.ConfigDB_WriteValueToFile("user", "lobby.login", username, "config/user.cfg"); 184 186 // We only store the encrypted password, so make sure to re-encrypt it if changed before saving. 185 187 if (password != g_EncrytedPassword.substring(0, 10)) 186 188 g_EncrytedPassword = Engine.EncryptPassword(password, username); 187 189 Engine.ConfigDB_CreateValue("user", "lobby.password", g_EncrytedPassword); 188 Engine.ConfigDB_Write File("user", "config/user.cfg");190 Engine.ConfigDB_WriteValueToFile("user", "lobby.password", g_EncrytedPassword, "config/user.cfg"); 189 191 break; 190 192 } 191 193 } -
binaries/data/mods/public/gui/options/options.js
5 5 { 6 6 if (data && data.callback) 7 7 g_HasCallback = true; 8 let revert = data && data.revert;9 8 g_Controls = {}; 10 9 11 10 var options = Engine.ReadJSONFile("gui/options/options.json"); … … 21 20 let label = Engine.GetGUIObjectByName(category + "Label[" + i + "]"); 22 21 let config = option.parameters.config; 23 22 g_Controls[config] = { 24 "control": setupControl(option, i, category , revert),23 "control": setupControl(option, i, category), 25 24 "type": option.type, 26 "dependencies": option.dependencies || undefined 25 "dependencies": option.dependencies || undefined, 26 "parameters": option.parameters 27 27 }; 28 28 label.caption = translate(option.label); 29 29 label.tooltip = option.tooltip ? translate(option.tooltip) : ""; … … 47 47 continue; 48 48 if (!opt.dependencies || opt.dependencies.indexOf(config) === -1) 49 49 continue; 50 label.caption = " 50 label.caption = " " + label.caption; 51 51 break; 52 52 } 53 53 // Show element. … … 55 55 } 56 56 } 57 57 58 updateDependencies(); 59 if (!revert) 60 updateStatus(); 58 updateOptionPanel(); 61 59 } 62 60 63 61 /** … … 66 64 * @param option Structure containing the data to setup an option. 67 65 * @param prefix Prefix to use when accessing control, for example "generalSetting" when the tickbox name is generalSettingTickbox[i]. 68 66 */ 69 function setupControl(option, i, category , revert)67 function setupControl(option, i, category) 70 68 { 71 69 var control; 72 70 var onUpdate; … … 92 90 { 93 91 case "config": 94 92 keyConfig = option.parameters.config; 95 if (checked === undefined || revert)93 if (checked === undefined) 96 94 checked = Engine.ConfigDB_GetValue("user", keyConfig) === "true"; 97 else if ((Engine.ConfigDB_GetValue("user", keyConfig) === "true") !== checked) 98 { 99 Engine.ConfigDB_CreateValue("user", keyConfig, String(checked)); 100 updateStatus(true); 101 } 95 else if (checked !== (Engine.ConfigDB_GetValue("user", keyConfig) === "true")) 96 warn(" incompatible config option value for " + keyconfig); 102 97 break; 103 98 case "renderer": 104 99 keyRenderer = option.parameters.renderer; … … 111 106 if (checked === undefined) 112 107 checked = Engine["Renderer_Get" + keyRenderer + "Enabled"](); 113 108 else if (Engine["Renderer_Get" + keyRenderer + "Enabled"]() !== checked) 109 { 110 warn(" incompatible renderer option value for " + keyRenderer); 114 111 Engine["Renderer_Set" + keyRenderer + "Enabled"](checked); 112 } 115 113 break; 116 114 default: 117 115 warn("Unknown option source type '" + param + "'"); … … 130 128 if (keyRenderer) 131 129 Engine["Renderer_Set" + keyRenderer + "Enabled"](val); 132 130 if (keyConfig) 131 { 133 132 Engine.ConfigDB_CreateValue("user", keyConfig, String(val)); 134 updateDependencies(); 135 updateStatus(true); 133 Engine.ConfigDB_SetChanges("user", true); 134 } 135 updateOptionPanel(); 136 136 }; 137 137 }(keyRenderer, keyConfig, inverted); 138 138 … … 188 188 if (Engine.ConfigDB_GetValue("user", key) === this.caption) 189 189 return; 190 190 Engine.ConfigDB_CreateValue("user", key, this.caption); 191 Engine.ConfigDB_SetChanges("user", true); 191 192 if (functionBody) 192 193 Engine[functionBody](+this.caption); 193 updateDependencies(); 194 updateStatus(true); 194 updateOptionPanel(); 195 195 }; 196 196 }(key, functionBody, minval, maxval); 197 197 … … 201 201 break; 202 202 case "dropdown": 203 203 control = Engine.GetGUIObjectByName(category + "Dropdown[" + i + "]"); 204 control.onSelectionChange = function(){}; // just the time to setup the value 204 205 var caption; 205 206 var key; 206 207 var functionBody; … … 237 238 if (key === "materialmgr.quality") 238 239 val = val == 0 ? 2 : val == 1 ? 5 : 8; 239 240 Engine.ConfigDB_CreateValue("user", key, val); 240 updateDependencies();241 update Status(true);241 Engine.ConfigDB_SetChanges("user", true); 242 updateOptionPanel(); 242 243 }; 243 244 }(key); 244 245 … … 254 255 return control; 255 256 } 256 257 257 function update Status(val)258 function updateOptionPanel() 258 259 { 259 if (typeof val == "boolean") 260 Engine.ConfigDB_CreateValue("user", "nosave.haschanges", String(val)); 261 else 262 val = Engine.ConfigDB_GetValue("user", "nosave.haschanges") === "true"; 260 // Update dependencies 261 for (let item in g_Controls) 262 { 263 let control = g_Controls[item]; 264 if (control.type !== "boolean" && control.type !== "invertedboolean" || !control.dependencies) 265 continue; 263 266 264 Engine.GetGUIObjectByName("loadOptions").enabled = val; 265 Engine.GetGUIObjectByName("saveOptions").enabled = val; 267 for (let dependency of control.dependencies) 268 g_Controls[dependency].control.enabled = control.control.checked; 269 } 270 271 // And main buttons 272 let hasChanges = Engine.ConfigDB_HasChanges("user");; 273 Engine.GetGUIObjectByName("revertChanges").enabled = hasChanges; 274 Engine.GetGUIObjectByName("saveChanges").enabled = hasChanges; 266 275 } 267 276 268 277 /** … … 275 284 g_Controls[item].control.onPress(); 276 285 } 277 286 278 function updateDependencies()287 function resetChanges() 279 288 { 289 let btCaptions = [translate("No"), translate("Yes")]; 290 let btCode = [null, function(){ reallyResetChanges(); }]; 291 messageBox(500, 200, translate("Resetting the options may be effective only after restarting the game. Do you want to continue ?"), 292 translate("Warning"), 0, btCaptions, btCode); 293 } 294 295 function reallyResetChanges() 296 { 280 297 for (let item in g_Controls) 281 { 282 let control = g_Controls[item]; 283 if (control.type !== "boolean" && control.type !== "invertedboolean" || !control.dependencies) 284 continue; 298 Engine.ConfigDB_RemoveValue("user", item); 285 299 286 for (let dependency of control.dependencies) 287 g_Controls[dependency].control.enabled = control.control.checked; 288 } 300 Engine.ConfigDB_WriteFile("user", "config/user.cfg"); 301 revertChanges(); 289 302 } 290 303 291 304 function revertChanges() 292 305 { 293 306 Engine.ConfigDB_Reload("user"); 294 updateStatus(false); 295 init({ "revert": true }); 307 // needs to update renderer values (which are all of boolean type) 308 for (let item in g_Controls) 309 { 310 let control = g_Controls[item]; 311 if (!control.parameters.renderer) 312 continue; 313 if (control.type !== "boolean" && control.type !== "invertedboolean") 314 { 315 warn("Invalid type option defined in renderer '" + control.type + "': will not be reverted"); 316 continue; 317 } 318 let checked = Engine.ConfigDB_GetValue("user", item) === "true"; 319 let keyRenderer = control.parameters.renderer; 320 if (Engine["Renderer_Get" + keyRenderer + "Enabled"]() !== checked) 321 Engine["Renderer_Set" + keyRenderer + "Enabled"](checked); 322 } 323 Engine.ConfigDB_SetChanges("user", false); 324 init(); 296 325 } 297 326 298 327 function saveChanges() … … 299 328 { 300 329 registerChanges(); 301 330 Engine.ConfigDB_WriteFile("user", "config/user.cfg"); 302 updateStatus(false); 331 Engine.ConfigDB_SetChanges("user", false); 332 updateOptionPanel(); 303 333 } 304 334 305 335 /** … … 308 338 function closePage() 309 339 { 310 340 registerChanges(); 311 if (Engine.ConfigDB_ GetValue("user", "nosave.haschanges") === "true")341 if (Engine.ConfigDB_HasChanges("user")) 312 342 { 313 343 let btCaptions = [translate("No"), translate("Yes")]; 314 344 let btCode = [null, function(){ closePageWithoutConfirmation(); }]; -
binaries/data/mods/public/gui/options/options.json
68 68 "type": "boolean", 69 69 "label": "Prefer GLSL", 70 70 "tooltip": "Use OpenGL 2.0 shaders (recommended)", 71 "parameters": { " renderer": "PreferGLSL", "config": "preferglsl" }71 "parameters": { "config": "preferglsl", "renderer": "PreferGLSL" } 72 72 }, 73 73 { 74 74 "type": "boolean", 75 75 "label": "Post Processing", 76 76 "tooltip": "Use screen-space postprocessing filters (HDR, Bloom, DOF, etc)", 77 "parameters": { " renderer": "Postproc", "config": "postproc" }77 "parameters": { "config": "postproc", "renderer": "Postproc" } 78 78 }, 79 79 { 80 80 "type": "dropdown", … … 86 86 "type": "boolean", 87 87 "label": "Shadows", 88 88 "tooltip": "Enable shadows", 89 "parameters": { "renderer": "Shadows", "config": "shadows"},89 "parameters": { "config": "shadows", "renderer": "Shadows" }, 90 90 "dependencies": [ "shadowpcf" ] 91 91 }, 92 92 { … … 93 93 "type": "boolean", 94 94 "label": "Shadow Filtering", 95 95 "tooltip": "Smooth shadows", 96 "parameters": { " renderer": "ShadowPCF", "config": "shadowpcf" }96 "parameters": { "config": "shadowpcf", "renderer": "ShadowPCF" } 97 97 }, 98 98 { 99 99 "type": "boolean", 100 100 "label": "Unit Silhouettes", 101 101 "tooltip": "Show outlines of units behind buildings", 102 "parameters": { " renderer": "Silhouettes", "config": "silhouettes" }102 "parameters": { "config": "silhouettes", "renderer": "Silhouettes" } 103 103 }, 104 104 { 105 105 "type": "boolean", 106 106 "label": "Particles", 107 107 "tooltip": "Enable particles", 108 "parameters": { " renderer": "Particles", "config": "particles" }108 "parameters": { "config": "particles", "renderer": "Particles" } 109 109 }, 110 110 { 111 111 "type": "invertedboolean", 112 112 "label": "Activate water effects", 113 113 "tooltip": "When OFF, use the lowest settings possible to render water. This makes other settings irrelevant.", 114 "parameters": { " renderer": "WaterUgly", "config": "waterugly" },114 "parameters": { "config": "waterugly", "renderer": "WaterUgly" }, 115 115 "dependencies": [ "waterfancyeffects", "waterrealdepth", "waterreflection", "waterrefraction", "watershadows" ] 116 116 }, 117 117 { … … 118 118 "type": "boolean", 119 119 "label": "HQ Water Effects", 120 120 "tooltip": "Use higher-quality effects for water, rendering coastal waves, shore foam, and ships trails.", 121 "parameters": { " renderer": "WaterFancyEffects", "config": "waterfancyeffects" }121 "parameters": { "config": "waterfancyeffects", "renderer": "WaterFancyEffects" } 122 122 }, 123 123 { 124 124 "type": "boolean", 125 125 "label": "Real Water Depth", 126 126 "tooltip": "Use actual water depth in rendering calculations", 127 "parameters": { " renderer": "WaterRealDepth", "config": "waterrealdepth" }127 "parameters": { "config": "waterrealdepth", "renderer": "WaterRealDepth" } 128 128 }, 129 129 { 130 130 "type": "boolean", 131 131 "label": "Water Reflections", 132 132 "tooltip": "Allow water to reflect a mirror image", 133 "parameters": { " renderer": "WaterReflection", "config": "waterreflection" }133 "parameters": { "config": "waterreflection", "renderer": "WaterReflection" } 134 134 }, 135 135 { 136 136 "type": "boolean", 137 137 "label": "Water Refraction", 138 138 "tooltip": "Use a real water refraction map and not transparency", 139 "parameters": { " renderer": "WaterRefraction", "config": "waterrefraction" }139 "parameters": { "config": "waterrefraction", "renderer": "WaterRefraction" } 140 140 }, 141 141 { 142 142 "type": "boolean", 143 143 "label": "Shadows on Water", 144 144 "tooltip": "Cast shadows on water", 145 "parameters": { " renderer": "WaterShadows", "config": "watershadows" }145 "parameters": { "config": "watershadows", "renderer": "WaterShadows" } 146 146 }, 147 147 { 148 148 "type": "boolean", 149 149 "label": "Smooth LOS", 150 150 "tooltip": "Lift darkness and fog-of-war smoothly", 151 "parameters": { " renderer": "SmoothLOS", "config": "smoothlos" }151 "parameters": { "config": "smoothlos", "renderer": "SmoothLOS" } 152 152 }, 153 153 { 154 154 "type": "boolean", 155 155 "label": "Show Sky", 156 156 "tooltip": "Render Sky", 157 "parameters": { " renderer": "ShowSky", "config": "showsky" }157 "parameters": { "config": "showsky", "renderer": "ShowSky" } 158 158 }, 159 159 { 160 160 "type": "boolean", -
binaries/data/mods/public/gui/options/options.xml
69 69 </object> 70 70 </repeat> 71 71 </object> 72 <object name="loadOptions" type="button" style="ModernButtonRed" size="50%-170 100%-44 50%-70 100%-16" hotkey="cancel"> 72 <object name="resetChanges" type="button" style="ModernButtonRed" size="50%-236 100%-44 50%-136 100%-16"> 73 <translatableAttribute id="caption">Reset</translatableAttribute> 74 <translatableAttribute id="tooltip">Resets user settings to their game default (may need a restart)</translatableAttribute> 75 <action on="Press">resetChanges();</action> 76 </object> 77 <object name="revertChanges" type="button" style="ModernButtonRed" size="50%-104 100%-44 50%-4 100%-16"> 73 78 <translatableAttribute id="caption">Revert</translatableAttribute> 74 <translatableAttribute id="tooltip">Revert to previous saved settings</translatableAttribute>79 <translatableAttribute id="tooltip">Reverts to previous saved settings</translatableAttribute> 75 80 <action on="Press">revertChanges();</action> 76 81 </object> 77 <object name="save Options" type="button" style="ModernButtonRed" size="50%-62 100%-44 50%+38100%-16">82 <object name="saveChanges" type="button" style="ModernButtonRed" size="50%+4 100%-44 50%+104 100%-16"> 78 83 <translatableAttribute id="caption">Save</translatableAttribute> 79 <translatableAttribute id="tooltip">Save changes</translatableAttribute>84 <translatableAttribute id="tooltip">Saves changes</translatableAttribute> 80 85 <action on="Press">saveChanges();</action> 81 86 </object> 82 <object type="button" style="ModernButtonRed" size="50%+ 70 100%-44 50%+170100%-16">87 <object type="button" style="ModernButtonRed" size="50%+136 100%-44 50%+236 100%-16"> 83 88 <translatableAttribute id="caption">Close</translatableAttribute> 84 89 <translatableAttribute id="tooltip">Unsaved changes affect this session only</translatableAttribute> 85 90 <action on="Press">closePage();</action> -
binaries/data/mods/public/gui/splashscreen/splashscreen.xml
27 27 <object name="btnOK" type="button" style="ModernButtonRed" size="18 100%-45 50%-5 100%-17" hotkey="cancel"> 28 28 <translatableAttribute id="caption">OK</translatableAttribute> 29 29 <action on="Press"><![CDATA[ 30 if (Engine.GetGUIObjectByName("displaySplashScreen").checked) 31 Engine.ConfigDB_CreateValue("user", "splashscreenversion", 0); 32 else 33 Engine.ConfigDB_CreateValue("user", "splashscreenversion", Engine.GetFileMTime("gui/splashscreen/splashscreen.txt")); 34 Engine.ConfigDB_WriteFile("user", "config/user.cfg"); 30 let version = Engine.GetGUIObjectByName("displaySplashScreen").checked ? 0 : Engine.GetFileMTime("gui/splashscreen/splashscreen.txt"); 31 Engine.ConfigDB_CreateValue("user", "splashscreenversion", version); 32 Engine.ConfigDB_WriteValueToFile("user", "splashscreenversion", version, "config/user.cfg"); 35 33 Engine.PopGuiPageCB(); 36 34 ]]></action> 37 35 </object> -
source/i18n/L10n.cpp
93 93 return false; 94 94 95 95 g_ConfigDB.SetValueString(CFG_USER, "locale", locale.getName()); 96 g_ConfigDB.Write File(CFG_USER);96 g_ConfigDB.WriteValueToFile(CFG_USER, "locale", locale.getName()); 97 97 return true; 98 98 } 99 99 -
source/network/NetServer.cpp
310 310 311 311 // Cache root descriptor URL to try to avoid discovery next time. 312 312 g_ConfigDB.SetValueString(CFG_USER, "network.upnprootdescurl", urls.controlURL); 313 g_ConfigDB.Write File(CFG_USER);313 g_ConfigDB.WriteValueToFile(CFG_USER, "network.upnprootdescurl", urls.controlURL); 314 314 LOGMESSAGE("Net server: cached UPnP root descriptor URL as %s", urls.controlURL); 315 315 316 316 // Make sure everything is properly freed. -
source/ps/ConfigDB.cpp
29 29 typedef std::map<CStr, CConfigValueSet> TConfigMap; 30 30 TConfigMap CConfigDB::m_Map[CFG_LAST]; 31 31 VfsPath CConfigDB::m_ConfigFile[CFG_LAST]; 32 bool CConfigDB::m_HasChanges[CFG_LAST]; 32 33 33 34 static pthread_mutex_t cfgdb_mutex = PTHREAD_MUTEX_INITIALIZER; 34 35 … … 114 115 GETVAL(std::string) 115 116 #undef GETVAL 116 117 118 bool CConfigDB::HasChanges(EConfigNamespace ns) const 119 { 120 CHECK_NS(false); 121 122 CScopeLock s(&cfgdb_mutex); 123 return m_HasChanges[ns]; 124 } 125 126 void CConfigDB::SetChanges(EConfigNamespace ns, bool& value) 127 { 128 CHECK_NS(;); 129 130 CScopeLock s(&cfgdb_mutex); 131 m_HasChanges[ns] = value; 132 } 133 117 134 void CConfigDB::GetValues(EConfigNamespace ns, const CStr& name, CConfigValueSet& values) const 118 135 { 119 136 CHECK_NS(;); … … 189 206 it->second[0] = value; 190 207 } 191 208 209 void CConfigDB::RemoveValue(EConfigNamespace ns, const CStr& name) 210 { 211 CHECK_NS(;); 212 213 CScopeLock s(&cfgdb_mutex); 214 TConfigMap::iterator it = m_Map[ns].find(name); 215 if (it == m_Map[ns].end()) 216 return; 217 m_Map[ns].erase(it); 218 } 219 192 220 void CConfigDB::SetConfigFile(EConfigNamespace ns, const VfsPath& path) 193 221 { 194 222 CHECK_NS(;); … … 378 406 char* pos = (char*)buf.get(); 379 407 for (const std::pair<CStr, CConfigValueSet>& p : m_Map[ns]) 380 408 { 381 if (boost::algorithm::starts_with(p.first, "nosave."))382 continue;383 409 size_t i; 384 410 pos += sprintf(pos, "%s = ", p.first.c_str()); 385 411 for (i = 0; i < p.second.size() - 1; ++i) … … 398 424 return true; 399 425 } 400 426 427 bool CConfigDB::WriteValueToFile(EConfigNamespace ns, const CStr& name, const CStr& value) 428 { 429 CHECK_NS(false); 430 431 CScopeLock s(&cfgdb_mutex); 432 return WriteValueToFile(ns, name, value, m_ConfigFile[ns]); 433 } 434 435 bool CConfigDB::WriteValueToFile(EConfigNamespace ns, const CStr& name, const CStr& value, const VfsPath& path) 436 { 437 CHECK_NS(false); 438 439 CScopeLock s(&cfgdb_mutex); 440 441 TConfigMap newMap; 442 m_Map[ns].swap(newMap); 443 if (!Reload(ns)) 444 return false; 445 446 SetValueString(ns, name, value); 447 bool ret = WriteFile(ns, path); 448 m_Map[ns].swap(newMap); 449 return ret; 450 } 451 401 452 #undef CHECK_NS -
source/ps/ConfigDB.h
52 52 { 53 53 static std::map<CStr, CConfigValueSet> m_Map[]; 54 54 static VfsPath m_ConfigFile[]; 55 static bool m_HasChanges[]; 55 56 56 57 public: 57 58 CConfigDB(); … … 72 73 void GetValue(EConfigNamespace ns, const CStr& name, std::string& value); 73 74 74 75 /** 76 * Returns true if changed with respect to last write on file 77 */ 78 bool HasChanges(EConfigNamespace ns) const; 79 80 void SetChanges(EConfigNamespace ns, bool& value); 81 82 /** 75 83 * Attempt to retrieve a vector of values corresponding to the given setting; 76 84 * will search CFG_COMMAND first, and then all namespaces from the specified 77 85 * namespace down. … … 96 104 * existed the value is replaced. 97 105 */ 98 106 void SetValueString(EConfigNamespace ns, const CStr& name, const CStr& value); 107 108 /** 109 * Remove a config value in the specified namespace. 110 */ 111 void RemoveValue(EConfigNamespace ns, const CStr& name); 99 112 100 113 /** 101 114 * Set the path to the config file used to populate the specified namespace … … 135 148 * false: if an error occurred 136 149 */ 137 150 bool WriteFile(EConfigNamespace ns) const; 151 152 /** 153 * Write a config value to the file specified by 'path' 154 * 155 * Returns: 156 * true: if the config value was successfully saved and written to the file 157 * false: if an error occurred 158 */ 159 bool WriteValueToFile(EConfigNamespace ns, const CStr& name, const CStr& value, const VfsPath& path); 160 161 bool WriteValueToFile(EConfigNamespace ns, const CStr& name, const CStr& value); 138 162 }; 139 163 140 164 -
source/ps/GameSetup/GameSetup.cpp
605 605 new CRenderer; 606 606 607 607 // set renderer options from command line options - NOVBO must be set before opening the renderer 608 // and init them in the ConfigDB when needed 608 609 g_Renderer.SetOptionBool(CRenderer::OPT_NOVBO, g_NoGLVBO); 609 610 g_Renderer.SetOptionBool(CRenderer::OPT_SHADOWS, g_Shadows); 611 g_ConfigDB.SetValueString(CFG_SYSTEM, "shadows", g_Shadows ? "true" : "false"); 610 612 611 613 g_Renderer.SetOptionBool(CRenderer::OPT_WATERUGLY, g_WaterUgly); 614 g_ConfigDB.SetValueString(CFG_SYSTEM, "waterugly", g_WaterUgly ? "true" : "false"); 612 615 g_Renderer.SetOptionBool(CRenderer::OPT_WATERFANCYEFFECTS, g_WaterFancyEffects); 616 g_ConfigDB.SetValueString(CFG_SYSTEM, "waterfancyeffects", g_WaterFancyEffects ? "true" : "false"); 613 617 g_Renderer.SetOptionBool(CRenderer::OPT_WATERREALDEPTH, g_WaterRealDepth); 618 g_ConfigDB.SetValueString(CFG_SYSTEM, "waterrealdepth", g_WaterRealDepth ? "true" : "false"); 614 619 g_Renderer.SetOptionBool(CRenderer::OPT_WATERREFLECTION, g_WaterReflection); 620 g_ConfigDB.SetValueString(CFG_SYSTEM, "waterreflection", g_WaterReflection ? "true" : "false"); 615 621 g_Renderer.SetOptionBool(CRenderer::OPT_WATERREFRACTION, g_WaterRefraction); 622 g_ConfigDB.SetValueString(CFG_SYSTEM, "waterrefraction", g_WaterRefraction ? "true" : "false"); 616 623 g_Renderer.SetOptionBool(CRenderer::OPT_SHADOWSONWATER, g_WaterShadows); 624 g_ConfigDB.SetValueString(CFG_SYSTEM, "watershadows", g_WaterShadows ? "true" : "false"); 617 625 618 626 g_Renderer.SetRenderPath(CRenderer::GetRenderPathByName(g_RenderPath)); 619 627 g_Renderer.SetOptionBool(CRenderer::OPT_SHADOWPCF, g_ShadowPCF); 628 g_ConfigDB.SetValueString(CFG_SYSTEM, "shadowpcf", g_ShadowPCF ? "true" : "false"); 620 629 g_Renderer.SetOptionBool(CRenderer::OPT_PARTICLES, g_Particles); 630 g_ConfigDB.SetValueString(CFG_SYSTEM, "particles", g_Particles ? "true" : "false"); 621 631 g_Renderer.SetOptionBool(CRenderer::OPT_SILHOUETTES, g_Silhouettes); 632 g_ConfigDB.SetValueString(CFG_SYSTEM, "silhouettes", g_Silhouettes ? "true" : "false"); 622 633 g_Renderer.SetOptionBool(CRenderer::OPT_SHOWSKY, g_ShowSky); 634 g_ConfigDB.SetValueString(CFG_SYSTEM, "showsky", g_ShowSky ? "true" : "false"); 623 635 g_Renderer.SetOptionBool(CRenderer::OPT_PREFERGLSL, g_PreferGLSL); 636 g_ConfigDB.SetValueString(CFG_SYSTEM, "preferglsl", g_PreferGLSL ? "true" : "false"); 624 637 g_Renderer.SetOptionBool(CRenderer::OPT_POSTPROC, g_PostProc); 638 g_ConfigDB.SetValueString(CFG_SYSTEM, "postproc", g_PostProc ? "true" : "false"); 625 639 g_Renderer.SetOptionBool(CRenderer::OPT_SMOOTHLOS, g_SmoothLOS); 640 g_ConfigDB.SetValueString(CFG_SYSTEM, "smoothlos", g_SmoothLOS ? "true" : "false"); 626 641 627 642 // create terrain related stuff 628 643 new CTerrainTextureManager; -
source/ps/UserReport.cpp
538 538 } 539 539 540 540 g_ConfigDB.SetValueString(CFG_USER, "userreport.id", userID); 541 g_ConfigDB.Write File(CFG_USER);541 g_ConfigDB.WriteValueToFile(CFG_USER, "userreport.id", userID); 542 542 } 543 543 544 544 return userID; … … 555 555 { 556 556 CStr val = CStr::FromInt(enabled ? REPORTER_VERSION : 0); 557 557 g_ConfigDB.SetValueString(CFG_USER, "userreport.enabledversion", val); 558 g_ConfigDB.Write File(CFG_USER);558 g_ConfigDB.WriteValueToFile(CFG_USER, "userreport.enabledversion", val); 559 559 560 560 if (m_Worker) 561 561 m_Worker->SetEnabled(enabled); -
source/ps/scripting/JSInterface_ConfigDB.cpp
42 42 return true; 43 43 } 44 44 45 bool JSI_ConfigDB::HasChanges(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const std::wstring& cfgNsString) 46 { 47 EConfigNamespace cfgNs; 48 if (!GetConfigNamespace(cfgNsString, cfgNs)) 49 return false; 50 51 return g_ConfigDB.HasChanges(cfgNs); 52 } 53 54 bool JSI_ConfigDB::SetChanges(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const std::wstring& cfgNsString, bool value) 55 { 56 EConfigNamespace cfgNs; 57 if (!GetConfigNamespace(cfgNsString, cfgNs)) 58 return false; 59 60 g_ConfigDB.SetChanges(cfgNs, value); 61 return true; 62 } 63 45 64 std::string JSI_ConfigDB::GetValue(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const std::wstring& cfgNsString, const std::string& name) 46 65 { 47 66 EConfigNamespace cfgNs; … … 63 82 return true; 64 83 } 65 84 85 bool JSI_ConfigDB::RemoveValue(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const std::wstring& cfgNsString, const std::string& name) 86 { 87 EConfigNamespace cfgNs; 88 if (!GetConfigNamespace(cfgNsString, cfgNs)) 89 return false; 90 91 g_ConfigDB.RemoveValue(cfgNs, name); 92 return true; 93 } 94 66 95 bool JSI_ConfigDB::WriteFile(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const std::wstring& cfgNsString, const Path& path) 67 96 { 68 97 EConfigNamespace cfgNs; … … 73 102 return ret; 74 103 } 75 104 105 bool JSI_ConfigDB::WriteValueToFile(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const std::wstring& cfgNsString, const std::string& name, const std::string& value, const Path& path) 106 { 107 EConfigNamespace cfgNs; 108 if (!GetConfigNamespace(cfgNsString, cfgNs)) 109 return false; 110 111 bool ret = g_ConfigDB.WriteValueToFile(cfgNs, name, value, path); 112 return ret; 113 } 114 76 115 bool JSI_ConfigDB::Reload(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const std::wstring& cfgNsString) 77 116 { 78 117 EConfigNamespace cfgNs; … … 95 134 96 135 void JSI_ConfigDB::RegisterScriptFunctions(ScriptInterface& scriptInterface) 97 136 { 137 scriptInterface.RegisterFunction<bool, std::wstring, &JSI_ConfigDB::HasChanges>("ConfigDB_HasChanges"); 138 scriptInterface.RegisterFunction<bool, std::wstring, bool, &JSI_ConfigDB::SetChanges>("ConfigDB_SetChanges"); 98 139 scriptInterface.RegisterFunction<std::string, std::wstring, std::string, &JSI_ConfigDB::GetValue>("ConfigDB_GetValue"); 99 140 scriptInterface.RegisterFunction<bool, std::wstring, std::string, std::string, &JSI_ConfigDB::CreateValue>("ConfigDB_CreateValue"); 141 scriptInterface.RegisterFunction<bool, std::wstring, std::string, &JSI_ConfigDB::RemoveValue>("ConfigDB_RemoveValue"); 100 142 scriptInterface.RegisterFunction<bool, std::wstring, Path, &JSI_ConfigDB::WriteFile>("ConfigDB_WriteFile"); 143 scriptInterface.RegisterFunction<bool, std::wstring, std::string, std::string, Path, &JSI_ConfigDB::WriteValueToFile>("ConfigDB_WriteValueToFile"); 101 144 scriptInterface.RegisterFunction<bool, std::wstring, Path, &JSI_ConfigDB::SetFile>("ConfigDB_SetFile"); 102 145 scriptInterface.RegisterFunction<bool, std::wstring, &JSI_ConfigDB::Reload>("ConfigDB_Reload"); 103 104 146 } -
source/ps/scripting/JSInterface_ConfigDB.h
24 24 namespace JSI_ConfigDB 25 25 { 26 26 bool GetConfigNamespace(const std::wstring& cfgNsString, EConfigNamespace& cfgNs); 27 bool HasChanges(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString); 28 bool SetChanges(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, bool value); 27 29 std::string GetValue(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const std::string& name); 28 30 bool CreateValue(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const std::string& name, const std::string& value); 31 bool RemoveValue(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const std::string& name); 29 32 bool WriteFile(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const Path& path); 33 bool WriteValueToFile(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const std::string& name, const std::string& value, const Path& path); 30 34 bool Reload(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString); 31 35 bool SetFile(ScriptInterface::CxPrivate* pCxPrivate, const std::wstring& cfgNsString, const Path& path); 32 36 void RegisterScriptFunctions(ScriptInterface& scriptInterface);