Ticket #1580: 1580.patch

File 1580.patch, 6.2 KB (added by Stan, 9 years ago)

Answered previous comments.

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

     
    148148
    149149// ====================================================================
    150150
     151function sameColor(color1, color2)
     152{
     153    return color1.r === color2.r && color1.g === color2.g && color1.b === color2.b;
     154}
     155
     156// ====================================================================
     157
    151158/**
    152159 * Convert time in milliseconds to [hh:]mm:ss string representation.
    153160 * @param time Time period in milliseconds (integer)
  • binaries/data/mods/public/gui/gamesetup/gamesetup.js

     
    88const g_VictoryConditions = prepareForDropdown(g_Settings ? g_Settings.VictoryConditions : undefined);
    99const g_PopulationCapacities = prepareForDropdown(g_Settings ? g_Settings.PopulationCapacities : undefined);
    1010const g_StartingResources = prepareForDropdown(g_Settings ? g_Settings.StartingResources : undefined);
     11// Gaia color should not be selectable.
     12const g_PlayerColors = initPlayerDefaults().slice(1).map(playerData => playerData.Color);
    1113
    1214////////////////////////////////////////////////////////////////////////////////////////////////
    1315
     
    375377            updateGameAttributes();
    376378        };
    377379
     380        // Populate color drop-down lists.
     381        var colorPicker = Engine.GetGUIObjectByName("playerColorPicker["+i+"]");
     382        colorPicker.list = g_PlayerColors.map(color => '[font="sans-stroke-14"][color="' + color.r + ' ' + color.g + ' ' + color.b + '"] ■[/color][/font]');
     383        colorPicker.list_data = g_PlayerColors.map((color, index) => index);
     384        colorPicker.selected = -1;
     385
     386        // Update color
     387        colorPicker.onSelectionChange = function()
     388        {
     389            if (this.selected == -1)
     390                return;
     391
     392            // Add missing properties
     393            g_GameAttributes.settings.PlayerData.forEach((pData, index) => {
     394                if (!pData.Color)
     395                    pData.Color = g_PlayerColors[index];
     396            });
     397
     398            // If someone else has that color, give him/her the old one
     399            let playerID = g_GameAttributes.settings.PlayerData.findIndex(pData => sameColor(g_PlayerColors[this.selected], pData.Color));
     400            if (playerID != -1)
     401                g_GameAttributes.settings.PlayerData[playerID].Color = g_GameAttributes.settings.PlayerData[playerSlot].Color;
     402
     403            g_GameAttributes.settings.PlayerData[playerSlot].Color = g_PlayerColors[this.selected];
     404
     405            if (!g_IsInGuiUpdate)
     406                updateGameAttributes();
     407        }
     408
    378409        // Set events
    379410        var civ = Engine.GetGUIObjectByName("playerCiv["+i+"]");
    380411        civ.onSelectionChange = function() {
     
    14241455        var pTeam = Engine.GetGUIObjectByName("playerTeam["+i+"]");
    14251456        var pTeamText = Engine.GetGUIObjectByName("playerTeamText["+i+"]");
    14261457        var pColor = Engine.GetGUIObjectByName("playerColor["+i+"]");
     1458        var pColorPicker = Engine.GetGUIObjectByName("playerColorPicker["+i+"]")
    14271459
    14281460        // Player data / defaults
    14291461        var pData = mapSettings.PlayerData ? mapSettings.PlayerData[i] : {};
     
    14301462        var pDefs = g_DefaultPlayerData ? g_DefaultPlayerData[i] : {};
    14311463
    14321464        // Common to all game types
    1433         var color = rgbToGuiColor(getSetting(pData, pDefs, "Color"));
    1434         pColor.sprite = "color:" + color + " 100";
     1465        var color = getSetting(pData, pDefs, "Color");
     1466        pColor.sprite = "color:" + rgbToGuiColor(color) + " 100";
    14351467        pName.caption = translate(getSetting(pData, pDefs, "Name"));
    14361468
    14371469        var team = getSetting(pData, pDefs, "Team");
     
    14511483        {
    14521484            pCivText.hidden = false;
    14531485            pCiv.hidden = true;
     1486            pColorPicker.hidden = true;
    14541487            pTeamText.hidden = false;
    14551488            pTeam.hidden = true;
    14561489            // Set text values
     
    14661499            pCiv.hidden = false;
    14671500            pTeamText.hidden = true;
    14681501            pTeam.hidden = false;
     1502            pColorPicker.hidden = false;
    14691503            // Set dropdown values
    14701504            pCiv.selected = (civ ? pCiv.list_data.indexOf(civ) : 0);
    14711505            pTeam.selected = (team !== undefined && team >= 0) ? team+1 : 0;
     1506            pColorPicker.selected = g_PlayerColors.findIndex(col => sameColor(col, color));
    14721507        }
    14731508    }
    14741509
  • binaries/data/mods/public/gui/gamesetup/gamesetup.xml

     
    3939            <!-- Player assignments -->
    4040            <object size="24 49 100%-440 345" type="image" sprite="ModernDarkBoxGold" name="playerAssignmentsPanel">
    4141                <object size="0 6 100% 30">
    42                     <object name="playerNameHeading" type="text" style="ModernLabelText" size="0 0 22% 100%">
     42                    <object name="playerNameHeading" type="text" style="ModernLabelText" size="0 0 16% 100%">
    4343                        <translatableAttribute id="caption">Player Name</translatableAttribute>
    4444                    </object>
     45                    <object name="playerColorHeading" type="text" style="ModernLabelText" size="-3% 0 40% 100%">
     46                        <translatableAttribute id="caption">Color</translatableAttribute>
     47                    </object>
    4548                    <object name="playerPlacementHeading" type="text" style="ModernLabelText" size="22%+5 0 50%+35 100%">
    4649                        <translatableAttribute id="caption">Player Placement</translatableAttribute>
    4750                    </object>
     
    6871                    <repeat count="8">
    6972                        <object name="playerBox[n]" size="0 0 100% 32" hidden="true">
    7073                            <object name="playerColor[n]" type="image" size="0 0 100% 100%"/>
    71                             <object name="playerName[n]" type="text" style="ModernLabelText" size="0 2 22% 30"/>
     74                            <object name="playerName[n]" type="text" style="ModernLabelText" size="0 0 16% 100%"/>
     75                            <object name="playerColorPicker[n]" type="dropdown" style="ModernDropDown" size="15%+5 2 20%+5 30" tooltip_style="onscreenToolTip">
     76                                <translatableAttribute id="tooltip">Pick a color.</translatableAttribute>
     77                            </object>
    7278                            <object name="playerAssignment[n]" type="dropdown" style="ModernDropDown" size="22%+5 2 50%+35 30" tooltip_style="onscreenToolTip">
    7379                                <translatableAttribute id="tooltip">Select player.</translatableAttribute>
    7480                            </object>