Ticket #3883: roughsketch.patch

File roughsketch.patch, 2.0 KB (added by elexis, 8 years ago)

In order to remove unintended tags, loadPersistMatchSettings() in gamesetup.js needs to delete all properties of the attrs object which can't be changed by the user.

  • binaries/data/mods/public/gui/gamesetup/gamesetup.js

    function loadMapData(name)  
    817817function loadPersistMatchSettings()
    818818{
    819819    if (Engine.ConfigDB_GetValue("user", "persistmatchsettings") != "true")
    820820        return;
    821821
     822    // Load file
    822823    let settingsFile = g_IsNetworked ? g_MatchSettings_MP : g_MatchSettings_SP;
    823824    if (!Engine.FileExists(settingsFile))
    824825        return;
    825826
    826827    let attrs = Engine.ReadJSONFile(settingsFile);
    827828    if (!attrs || !attrs.settings)
    828829        return;
    829830
     831    // Find which settings can be changed by the user
     832    let allowedSettings = ["GameSpeed", "map", "maptype", "mapfilter"];
     833
     834    if (attrs.mapType == "skirmish" || attrs.mapType == "skirmish")
     835        allowedSettings = allowedSettings.concat(["victorycondition", "population cap", "starting resources", "ceasefire", "revealed map", "explored map", "disable treasures", "teams locked"]);
     836
     837    if (attrs.mapType == "random")
     838        allowedSettings = allowedSettings.concat(["mapsize", "numPlayers"]);
     839
     840    attrs.settings.RatingEnabled = Engine.HasXmppClient();
     841    Engine.SetRankedGame(attrs.settings.RatingEnabled);
     842
     843    if (g_IsNetworked && !attrs.settings.RatingEnabled)
     844        allowedSettings.push("cheats");
     845
     846    // Only load settings which can be changed by the user
     847    for (let prop in attrs)
     848        if (!prop in allowedSettings)
     849            delete attrs[prop];
     850
     851    // Restore valid matchsettings
    830852    g_IsInGuiUpdate = true;
    831853
    832854    let mapName = attrs.map || "";
    833855    let mapSettings = attrs.settings;
    834856
    function loadPersistMatchSettings()  
    862884        sanitizePlayerData(mapSettings.PlayerData);
    863885
    864886    // Reload, as the maptype or mapfilter might have changed
    865887    initMapNameList();
    866888
    867     g_GameAttributes.settings.RatingEnabled = Engine.HasXmppClient();
    868     Engine.SetRankedGame(g_GameAttributes.settings.RatingEnabled);
    869 
    870889    updateGUIObjects();
    871890}
    872891
    873892function savePersistMatchSettings()
    874893{