Ticket #1580: 1580.6.diff

File 1580.6.diff, 8.5 KB (added by Stan, 9 years ago)

Some Cleanup

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

     
    3232    var settings = {
    3333        "Ceasefire": loadCeasefire(),
    3434        "GameSpeeds": loadSettingValuesFile("game_speeds.json"),
     35        "PlayerColors": loadPlayerColors(),
    3536        "PopulationCapacities": loadPopulationCapacities(),
    3637        "StartingResources": loadSettingValuesFile("starting_resources.json")
    3738    };
     
    8990}
    9091
    9192/**
     93* Loads available colors settings.
     94*
     95* @returns {Array|undefined}
     96*/
     97function loadPlayerColors()
     98{
     99    var json = Engine.ReadJSONFile("simulation/data/player_defaults.json");
     100
     101    if (!json || !json.PlayerData || !Array.isArray(json.PlayerData))
     102    {
     103        error("Could not load player_defaults.json");
     104        return undefined;
     105    }
     106
     107    return json.PlayerData.map(player => player.Color);
     108}
     109
     110/**
    92111 * Loads available population capacities.
    93112 *
    94113 * @returns {Array|undefined}
  • binaries/data/mods/public/gui/gamesetup/gamesetup.js

     
    77
    88const g_Ceasefire = prepareForDropdown(g_Settings ? g_Settings.Ceasefire : undefined);
    99const g_GameSpeeds = prepareForDropdown(g_Settings ? g_Settings.GameSpeeds.filter(speed => !speed.ReplayOnly) : undefined);
     10const g_PlayerColors = prepareForDropdown(g_Settings ? g_Settings.PlayerColors : undefined);
    1011const g_PopulationCapacities = prepareForDropdown(g_Settings ? g_Settings.PopulationCapacities : undefined);
    1112const g_StartingResources = prepareForDropdown(g_Settings ? g_Settings.StartingResources : undefined);
    1213
     
    5051
    5152var g_AIs = [];
    5253
     54var g_PlayerColorIds = [];
     55var g_PlayerColorNames = [];
     56var g_PlayerColorValues = [["r","g","b"]];
     57
    5358var g_ChatMessages = [];
    5459
    5560// Data caches
     
    380385            updateGameAttributes();
    381386        };
    382387
     388        // Populate color drop-down lists.
     389        var colorPicker = Engine.GetGUIObjectByName("playerColorPicker["+i+"]");
     390        colorPicker.list = getPlayerColorNames();
     391        colorPicker.list_data = getPlayerColorIds();
     392        colorPicker.selected = -1;
     393        // Update color
     394        colorPicker.onSelectionChange = function()
     395        {
     396            if (this.selected !== -1)
     397            {
     398                let numPlayers = g_GameAttributes.settings.PlayerData.length;
     399                let inUse = false;
     400                let playerColorValues = getPlayerColorValues();
     401                for (let n = 0; n < numPlayers; ++n)
     402                    if (rgbValuesMatch(playerColorValues[this.list_data[this.selected]], getSetting(g_GameAttributes.settings.PlayerData, g_DefaultPlayerData ? g_DefaultPlayerData[n] : {}, "Color")))
     403                    {
     404                        inUse = true;
     405                        break;
     406                    }
     407                if(!inUse)
     408                    copyRgbValuesFromColorIntoColor(playerColorValues[this.list_data[this.selected]], getSetting(g_GameAttributes.settings.PlayerData, g_DefaultPlayerData ? g_DefaultPlayerData[playerSlot] : {}, "Color"));
     409            }
     410            if (!g_IsInGuiUpdate)
     411                    updateGameAttributes();
     412        }
     413
    383414        // Set events
    384415        var civ = Engine.GetGUIObjectByName("playerCiv["+i+"]");
    385416        civ.onSelectionChange = function() {
     
    413444    }
    414445}
    415446
     447// Returns the index of the specified color.
     448function getIndexOfColor(color)
     449{
     450    for (var i = 0; i < g_PlayerColors.r.length; ++i)
     451        if (rgbValuesMatch(g_Settings.PlayerColors[i], color))
     452            return i;
     453
     454    return -1;
     455}
     456
     457function getPlayerColorIds()
     458{
     459    for(let i = 0; i < g_PlayerColors.r.length;++i)
     460        g_PlayerColorIds[i] = i;
     461
     462    return g_PlayerColorIds;
     463}
     464
     465function copyRgbValuesFromColorIntoColor(color1, color2)
     466{
     467    color2.r = color1.r;
     468    color2.g = color1.g;
     469    color2.b = color1.b;
     470}
     471
     472function getPlayerColorNames()
     473{
     474    for(let i = 0; i < g_PlayerColors.r.length;++i)
     475        g_PlayerColorNames[i] = "[color=\"" + g_PlayerColors.r[i] + " " + g_PlayerColors.g[i] + " " + g_PlayerColors.b[i] + " 255\"]" + "■";
     476
     477    return g_PlayerColorNames;
     478}
     479
     480function getPlayerColorValues()
     481{
     482    return g_Settings.PlayerColors;
     483}
     484
     485function rgbValuesMatch(color1, color2)
     486{
     487    return color1.r === color2.r && color1.g === color2.g && color1.b === color2.b;
     488}
     489
    416490function handleNetMessage(message)
    417491{
    418492    log("Net message: " + uneval(message));
     
    14221496        var pTeam = Engine.GetGUIObjectByName("playerTeam["+i+"]");
    14231497        var pTeamText = Engine.GetGUIObjectByName("playerTeamText["+i+"]");
    14241498        var pColor = Engine.GetGUIObjectByName("playerColor["+i+"]");
     1499        var pColorPicker = Engine.GetGUIObjectByName("playerColorPicker["+i+"]")
    14251500
    14261501        // Player data / defaults
    14271502        var pData = mapSettings.PlayerData ? mapSettings.PlayerData[i] : {};
     
    14281503        var pDefs = g_DefaultPlayerData ? g_DefaultPlayerData[i] : {};
    14291504
    14301505        // Common to all game types
    1431         var color = rgbToGuiColor(getSetting(pData, pDefs, "Color"));
    1432         pColor.sprite = "color:" + color + " 100";
     1506        var color = getSetting(pData, pDefs, "Color");
     1507        pColor.sprite = "color:" + rgbToGuiColor(color) + " 100";
    14331508        pName.caption = translate(getSetting(pData, pDefs, "Name"));
    14341509
    14351510        var team = getSetting(pData, pDefs, "Team");
     
    14491524        {
    14501525            pCivText.hidden = false;
    14511526            pCiv.hidden = true;
     1527            pColorPicker.hidden = true;
    14521528            pTeamText.hidden = false;
    14531529            pTeam.hidden = true;
    14541530            // Set text values
     
    14641540            pCiv.hidden = false;
    14651541            pTeamText.hidden = true;
    14661542            pTeam.hidden = false;
     1543            pColorPicker.hidden = false;
    14671544            // Set dropdown values
    14681545            pCiv.selected = (civ ? pCiv.list_data.indexOf(civ) : 0);
    14691546            pTeam.selected = (team !== undefined && team >= 0) ? team+1 : 0;
     1547            pColorPicker.selected = getIndexOfColor(color);
    14701548        }
    14711549    }
    14721550
  • binaries/data/mods/public/gui/gamesetup/gamesetup.xml

     
    4242            <!-- Player assignments -->
    4343            <object size="24 49 100%-440 345" type="image" sprite="ModernDarkBoxGold" name="playerAssignmentsPanel">
    4444                <object size="0 6 100% 30">
    45                     <object name="playerNameHeading" type="text" style="ModernLabelText" size="0 0 22% 100%">
     45                    <object name="playerNameHeading" type="text" style="ModernLabelText" size="0 0 16% 100%">
    4646                        <translatableAttribute id="caption">Player Name</translatableAttribute>
    4747                    </object>
     48                    <object name="playerColorHeading" type="text" style="ModernLabelText" size="-2% 0 40% 100%">
     49                        <translatableAttribute id="caption">Color</translatableAttribute>
     50                    </object>
    4851                    <object name="playerPlacementHeading" type="text" style="ModernLabelText" size="22%+5 0 50%+35 100%">
    4952                        <translatableAttribute id="caption">Player Placement</translatableAttribute>
    5053                    </object>
     
    7174                    <repeat count="8">
    7275                        <object name="playerBox[n]" size="0 0 100% 32" hidden="true">
    7376                            <object name="playerColor[n]" type="image" size="0 0 100% 100%"/>
    74                             <object name="playerName[n]" type="text" style="ModernLabelText" size="0 2 22% 30"/>
     77                            <object name="playerName[n]" type="text" style="ModernLabelText" size="0 0 16% 100%"/>
     78                            <object name="playerColorPicker[n]" type="dropdown" style="ModernDropDown" size="16%+5 2 20%+5 30" tooltip_style="onscreenToolTip">
     79                                <translatableAttribute id="tooltip">Pick Color.</translatableAttribute>
     80                            </object>
    7581                            <object name="playerAssignment[n]" type="dropdown" style="ModernDropDown" size="22%+5 2 50%+35 30" tooltip_style="onscreenToolTip">
    7682                                <translatableAttribute id="tooltip">Select player.</translatableAttribute>
    7783                            </object>
     
    152158                    tooltip_style="onscreenToolTip">
    153159                    <translatableAttribute id="tooltip">Select a map to play on.</translatableAttribute>
    154160                    <action on="SelectionChange">
    155                         if (this.list_data[this.selected]) 
     161                        if (this.list_data[this.selected])
    156162                            selectMap(this.list_data[this.selected]);
    157163                    </action>
    158164                </object>
     
    179185
    180186            <!-- Map Description -->
    181187            <object size="100%-425 529 100%-25 100%-60">
    182                 <object name="mapInfoName" type="text" style="ModernLeftLabelText" size="0 0 100%-120 30"/> 
     188                <object name="mapInfoName" type="text" style="ModernLeftLabelText" size="0 0 100%-120 30"/>
    183189                <object type="image" sprite="ModernDarkBoxGold" size="0 30 100% 100%">
    184190                    <object name="mapInfoDescription" type="text" style="MapDescription" size="0 0 100% 100%"/>
    185191                </object>