Ticket #3355: t3355_move_starting_resources_v1.1.patch

File t3355_move_starting_resources_v1.1.patch, 7.1 KB (added by elexis, 9 years ago)

After a review by mimo: Renamed loadAvailableSettings and in case of error, print all erroneous files.

  • binaries/data/mods/public/gui/common/settings.js

     
    1717
    1818/**
    1919 * An object containing all values given by setting name.
    2020 * Used by lobby, gamesetup, session, summary screen and replay menu.
    2121 */
    22 const g_Settings = loadAvailableSettings();
     22const g_Settings = loadSettingsValues();
    2323
    2424/**
    2525 * Loads and translates all values of all settings which
    2626 * can be configured by dropdowns in the gamesetup.
    2727 *
    2828 * @returns {Object|undefined}
    2929 */
    30 function loadAvailableSettings()
     30function loadSettingsValues()
    3131{
    32     var settings = {};
     32    var settings = {
     33        "Ceasefire": loadCeasefire(),
     34        "StartingResources": loadSettingValuesFile("starting_resources.json")
     35    };
    3336
    34     settings.Ceasefire = loadCeasefire();
    35     if (!settings.Ceasefire)
     37    if (Object.keys(settings).some(key => settings[key] === undefined))
    3638        return undefined;
    3739
    3840    return settings;
    3941}
    4042
    4143/**
     44 * Returns an array of objects reflecting all possible values for a given setting.
     45 *
     46 * @param {string} filename
     47 * @see simulation/data/settings/
     48 * @returns {Array|undefined}
     49 */
     50function loadSettingValuesFile(filename)
     51{
     52    var json = Engine.ReadJSONFile(g_SettingsDirectory + filename);
     53
     54    if (!json || !json.Data)
     55    {
     56        error("Could not load " + filename + "!");
     57        return undefined;
     58    }
     59
     60    if (json.TranslatedKeys)
     61        translateObjectKeys(json, json.TranslatedKeys);
     62
     63    return json.Data;
     64}
     65
     66/**
    4267 * Loads available ceasefire settings.
    4368 *
    4469 * @returns {Array|undefined}
    4570 */
    4671function loadCeasefire()
  • binaries/data/mods/public/gui/gamesetup/gamesetup.js

     
    88// TODO: Move these somewhere like simulation\data\game_types.json, Atlas needs them too
    99// Translation: Type of victory condition.
    1010const POPULATION_CAP = ["50", "100", "150", "200", "250", "300", translate("Unlimited")];
    1111const POPULATION_CAP_DATA = [50, 100, 150, 200, 250, 300, 10000];
    1212const POPULATION_CAP_DEFAULTIDX = 5;
    13 // Translation: Amount of starting resources.
    14 const STARTING_RESOURCES = [translateWithContext("startingResources", "Very Low"), translateWithContext("startingResources", "Low"), translateWithContext("startingResources", "Medium"), translateWithContext("startingResources", "High"), translateWithContext("startingResources", "Very High"), translateWithContext("startingResources", "Deathmatch")];
    15 const STARTING_RESOURCES_DATA = [100, 300, 500, 1000, 3000, 50000];
    16 const STARTING_RESOURCES_DEFAULTIDX = 1;
    1713
     14const g_StartingResources = prepareForDropdown(g_Settings ? g_Settings.StartingResources : undefined);
    1815const g_Ceasefire = prepareForDropdown(g_Settings ? g_Settings.Ceasefire : undefined);
    1916
    2017////////////////////////////////////////////////////////////////////////////////////////////////
    2118
    2219// Is this is a networked game, or offline
     
    211208
    212209            updateGameAttributes();
    213210        }
    214211
    215212        var startingResourcesL = Engine.GetGUIObjectByName("startingResources");
    216         startingResourcesL.list = STARTING_RESOURCES;
    217         startingResourcesL.list_data = STARTING_RESOURCES_DATA;
    218         startingResourcesL.selected = STARTING_RESOURCES_DEFAULTIDX;
     213        startingResourcesL.list = g_StartingResources.Title;
     214        startingResourcesL.list_data = g_StartingResources.Resources;
     215        startingResourcesL.selected = g_StartingResources.Default;
    219216        startingResourcesL.onSelectionChange = function() {
    220217            if (this.selected != -1)
    221                 g_GameAttributes.settings.StartingResources = STARTING_RESOURCES_DATA[this.selected];
     218                g_GameAttributes.settings.StartingResources = g_StartingResources.Resources[this.selected];
    222219
    223220            updateGameAttributes();
    224221        }
    225222
    226223        var ceasefireL = Engine.GetGUIObjectByName("ceasefire");
     
    12531250
    12541251    gameSpeedText.caption = g_GameSpeeds.names[speedIdx];
    12551252    gameSpeedBox.selected = speedIdx;
    12561253    populationCap.selected = (mapSettings.PopulationCap !== undefined && POPULATION_CAP_DATA.indexOf(mapSettings.PopulationCap) != -1 ? POPULATION_CAP_DATA.indexOf(mapSettings.PopulationCap) : POPULATION_CAP_DEFAULTIDX);
    12571254    populationCapText.caption = POPULATION_CAP[populationCap.selected];
    1258     startingResources.selected = (mapSettings.StartingResources !== undefined && STARTING_RESOURCES_DATA.indexOf(mapSettings.StartingResources) != -1 ? STARTING_RESOURCES_DATA.indexOf(mapSettings.StartingResources) : STARTING_RESOURCES_DEFAULTIDX);
    1259     startingResourcesText.caption = STARTING_RESOURCES[startingResources.selected];
     1255    startingResources.selected = mapSettings.StartingResources !== undefined && g_StartingResources.Resources.indexOf(mapSettings.StartingResources) != -1 ? g_StartingResources.Resources.indexOf(mapSettings.StartingResources) : g_StartingResources.Default;
     1256    startingResourcesText.caption = g_StartingResources.Title[startingResources.selected];
    12601257    ceasefire.selected = mapSettings.Ceasefire !== undefined && g_Ceasefire.Duration.indexOf(mapSettings.Ceasefire) != -1 ? g_Ceasefire.Duration.indexOf(mapSettings.Ceasefire) : g_Ceasefire.Default;
    12611258    ceasefireText.caption = g_Ceasefire.Title[ceasefire.selected];
    12621259
    12631260    // Update map preview
    12641261    Engine.GetGUIObjectByName("mapPreview").sprite = "cropped:(0.78125,0.5859375)session/icons/mappreview/" + getMapPreview(mapName);
  • binaries/data/mods/public/l10n/messages.json

     
    463463                }
    464464            },
    465465            {
    466466                "extractor": "json",
    467467                "filemasks": [
     468                    "simulation/data/settings/starting_resources.json"
     469                ],
     470                "options": {
     471                    "keywords": ["Title"],
     472                    "context": "startingResources"
     473                 }
     474             },
     475            {
     476                "extractor": "json",
     477                "filemasks": [
    468478                    "simulation/data/map_sizes.json"
    469479                ],
    470480                "options": {
    471481                    "keywords": [
    472482                        "Name",
  • binaries/data/mods/public/simulation/data/settings/starting_resources.json

     
     1{
     2    "TranslatedKeys": { "Title": "startingResources" },
     3    "Data":
     4    [
     5        {
     6            "Resources": 100,
     7            "Title": "Very Low"
     8        },
     9        {
     10            "Resources": 300,
     11            "Title": "Low",
     12            "Default": true
     13        },
     14        {
     15            "Resources": 500,
     16            "Title": "Medium"
     17        },
     18        {
     19            "Resources": 1000,
     20            "Title": "High"
     21        },
     22        {
     23            "Resources": 3000,
     24            "Title": "Very High"
     25        },
     26        {
     27            "Resources": 50000,
     28            "Title": "Deathmatch"
     29        }
     30    ]
     31}