Ticket #1580: 1580.8.diff

File 1580.8.diff, 6.1 KB (added by Stan, 9 years ago)
  • 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

     
    1010const g_PopulationCapacities = prepareForDropdown(g_Settings ? g_Settings.PopulationCapacities : undefined);
    1111const g_StartingResources = prepareForDropdown(g_Settings ? g_Settings.StartingResources : undefined);
    1212
     13const g_PlayerColors = initPlayerDefaults().slice(1).map(playerData => playerData.Color);
     14
    1315////////////////////////////////////////////////////////////////////////////////////////////////
    1416
    1517// Is this is a networked game, or offline
     
    380382            updateGameAttributes();
    381383        };
    382384
     385        // Populate color drop-down lists.
     386        var colorPicker = Engine.GetGUIObjectByName("playerColorPicker["+i+"]");
     387        colorPicker.list = g_PlayerColors.map(color => '[color="' + color.r + ' ' + color.g + ' ' + color.b + '"]■[/color]' );
     388        colorPicker.list_data = g_PlayerColors.map((color, index) => index);
     389        colorPicker.selected = -1;
     390
     391        // Update color
     392        colorPicker.onSelectionChange = function()
     393        {
     394            if (this.selected == -1)
     395                return;
     396
     397            // Add missing properties
     398            g_GameAttributes.settings.PlayerData.forEach((pData, index) => {
     399                if (!pData.Color)
     400                    pData.Color = g_PlayerColors[index];
     401            });
     402
     403            // If someone else has that color, give him/her the old one
     404            let playerID = g_GameAttributes.settings.PlayerData.findIndex(pData => sameColor(g_PlayerColors[this.selected], pData.Color));
     405            if (playerID != -1)
     406                g_GameAttributes.settings.PlayerData[playerID].Color = g_GameAttributes.settings.PlayerData[playerSlot].Color;
     407
     408            g_GameAttributes.settings.PlayerData[playerSlot].Color = g_PlayerColors[this.selected];
     409
     410            if (!g_IsInGuiUpdate)
     411                updateGameAttributes();
     412        }
     413
    383414        // Set events
    384415        var civ = Engine.GetGUIObjectByName("playerCiv["+i+"]");
    385416        civ.onSelectionChange = function() {
     
    14221453        var pTeam = Engine.GetGUIObjectByName("playerTeam["+i+"]");
    14231454        var pTeamText = Engine.GetGUIObjectByName("playerTeamText["+i+"]");
    14241455        var pColor = Engine.GetGUIObjectByName("playerColor["+i+"]");
     1456        var pColorPicker = Engine.GetGUIObjectByName("playerColorPicker["+i+"]")
    14251457
    14261458        // Player data / defaults
    14271459        var pData = mapSettings.PlayerData ? mapSettings.PlayerData[i] : {};
     
    14281460        var pDefs = g_DefaultPlayerData ? g_DefaultPlayerData[i] : {};
    14291461
    14301462        // Common to all game types
    1431         var color = rgbToGuiColor(getSetting(pData, pDefs, "Color"));
    1432         pColor.sprite = "color:" + color + " 100";
     1463        var color = getSetting(pData, pDefs, "Color");
     1464        pColor.sprite = "color:" + rgbToGuiColor(color) + " 100";
    14331465        pName.caption = translate(getSetting(pData, pDefs, "Name"));
    14341466
    14351467        var team = getSetting(pData, pDefs, "Team");
     
    14491481        {
    14501482            pCivText.hidden = false;
    14511483            pCiv.hidden = true;
     1484            pColorPicker.hidden = true;
    14521485            pTeamText.hidden = false;
    14531486            pTeam.hidden = true;
    14541487            // Set text values
     
    14641497            pCiv.hidden = false;
    14651498            pTeamText.hidden = true;
    14661499            pTeam.hidden = false;
     1500            pColorPicker.hidden = false;
    14671501            // Set dropdown values
    14681502            pCiv.selected = (civ ? pCiv.list_data.indexOf(civ) : 0);
    14691503            pTeam.selected = (team !== undefined && team >= 0) ? team+1 : 0;
     1504            pColorPicker.selected = g_PlayerColors.findIndex(col => sameColor(col, color));
    14701505        }
    14711506    }
    14721507
  • 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="-3% 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="15%+5 2 20%+5 30" tooltip_style="onscreenToolTip">
     79                                <translatableAttribute id="tooltip">Pick a 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>