Ticket #3355: t3355_move_player_limit_v3.patch

File t3355_move_player_limit_v3.patch, 13.9 KB (added by elexis, 9 years ago)

Split once more. This is the smallest patch possible to move the player limits.

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

     
     1/**
     2 * The maximum number of players that the engine supports.
     3 * TODO: Maybe we can support more than 8 players sometime.
     4 */
     5const g_MaxPlayers = 8;
     6
     7/**
     8 * The maximum number of teams allowed.
     9 */
     10const g_MaxTeams = 4;
     11
     12// The following settings will be loaded here:
     13// AIDifficulties, Ceasefire, GameSpeeds, GameTypes, MapTypes,
     14// MapSizes, PlayerDefaults, PopulationCapacity, StartingResources
  • binaries/data/mods/public/gui/gamesetup/gamesetup.js

     
    1616const STARTING_RESOURCES_DEFAULTIDX = 1;
    1717// Translation: Ceasefire.
    1818const CEASEFIRE = [translateWithContext("ceasefire", "No ceasefire"), translateWithContext("ceasefire", "5 minutes"), translateWithContext("ceasefire", "10 minutes"), translateWithContext("ceasefire", "15 minutes"), translateWithContext("ceasefire", "20 minutes"), translateWithContext("ceasefire", "30 minutes"), translateWithContext("ceasefire", "45 minutes"), translateWithContext("ceasefire", "60 minutes")];
    1919const CEASEFIRE_DATA = [0, 5, 10, 15, 20, 30, 45, 60];
    2020const CEASEFIRE_DEFAULTIDX = 0;
    21 // Max number of players for any map
    22 const MAX_PLAYERS = 8;
    2321
    2422////////////////////////////////////////////////////////////////////////////////////////////////
    2523
    2624// Is this is a networked game, or offline
    2725var g_IsNetworked;
     
    178176        // for the lobby.
    179177        g_GameAttributes.matchID = Engine.GetMatchID();
    180178
    181179        initMapNameList();
    182180
    183         var numPlayersSelection = Engine.GetGUIObjectByName("numPlayersSelection");
    184         var players = [];
    185         for (var i = 1; i <= MAX_PLAYERS; ++i)
    186             players.push(i);
    187         numPlayersSelection.list = players;
    188         numPlayersSelection.list_data = players;
    189         numPlayersSelection.selected = MAX_PLAYERS - 1;
     181        let playersArray = Array(g_MaxPlayers).fill(0).map((v, i) => i + 1); // 1, 2, ..., MaxPlayers
     182        let numPlayersSelection = Engine.GetGUIObjectByName("numPlayersSelection");
     183        numPlayersSelection.list = playersArray;
     184        numPlayersSelection.list_data = playersArray;
     185        numPlayersSelection.selected = g_MaxPlayers - 1;
    190186
    191187        var gameSpeed = Engine.GetGUIObjectByName("gameSpeed");
    192188        gameSpeed.hidden = false;
    193189        Engine.GetGUIObjectByName("gameSpeedText").hidden = true;
    194190        gameSpeed.list = g_GameSpeeds.names;
     
    311307        Engine.GetGUIObjectByName("gameSpeedText").hidden = false;
    312308        Engine.GetGUIObjectByName("gameSpeed").hidden = true;
    313309
    314310        // Disable player and game options controls
    315311        // TODO: Shouldn't players be able to choose their own assignment?
    316         for (var i = 0; i < MAX_PLAYERS; ++i)
     312        for (let i = 0; i < g_MaxPlayers; ++i)
    317313        {
    318314            Engine.GetGUIObjectByName("playerAssignment["+i+"]").hidden = true;
    319315            Engine.GetGUIObjectByName("playerCiv["+i+"]").hidden = true;
    320316            Engine.GetGUIObjectByName("playerTeam["+i+"]").hidden = true;
    321317        }
     
    362358        }
    363359    }
    364360
    365361    // Settings for all possible player slots
    366362    var boxSpacing = 32;
    367     for (var i = 0; i < MAX_PLAYERS; ++i)
     363    for (let i = 0; i < g_MaxPlayers; ++i)
    368364    {
    369365        // Space player boxes
    370366        var box = Engine.GetGUIObjectByName("playerBox["+i+"]");
    371367        var boxSize = box.size;
    372368        var h = boxSize.bottom - boxSize.top;
    373369        boxSize.top = i * boxSpacing;
    374370        boxSize.bottom = i * boxSpacing + h;
    375371        box.size = boxSize;
    376372
    377373        // Populate team dropdowns
    378         var team = Engine.GetGUIObjectByName("playerTeam["+i+"]");
    379         team.list = [translateWithContext("team", "None"), "1", "2", "3", "4"];
    380         team.list_data = [-1, 0, 1, 2, 3];
     374        let team = Engine.GetGUIObjectByName("playerTeam["+i+"]");
     375        let teamsArray = Array(g_MaxTeams).fill(0).map((v, i) => i + 1); // 1, 2, ... MaxTeams
     376        team.list = [translateWithContext("team", "None")].concat(teamsArray); // "None", 1, 2, ..., maxTeams
     377        team.list_data = [-1].concat(teamsArray.map(team => team - 1)); // -1, 0, ..., (maxTeams-1)
    381378        team.selected = 0;
    382379
    383380        let playerSlot = i; // declare for inner function use
    384381        team.onSelectionChange = function() {
    385382            if (this.selected != -1)
     
    594591    //  Add random civ to beginning of list
    595592    civListNames.unshift('[color="orange"]' + translateWithContext("civilization", "Random") + '[/color]');
    596593    civListCodes.unshift("random");
    597594
    598595    // Update the dropdowns
    599     for (var i = 0; i < MAX_PLAYERS; ++i)
     596    for (let i = 0; i < g_MaxPlayers; ++i)
    600597    {
    601598        var civ = Engine.GetGUIObjectByName("playerCiv["+i+"]");
    602599        civ.list = civListNames;
    603600        civ.list_data = civListCodes;
    604601        civ.selected = 0;
     
    10291026
    10301027        for (var guid in g_PlayerAssignments)
    10311028        {   // Unassign extra players
    10321029            var player = g_PlayerAssignments[guid].player;
    10331030
    1034             if (player <= MAX_PLAYERS && player > numPlayers)
     1031            if (player <= g_MaxPlayers && player > numPlayers)
    10351032                Engine.AssignNetworkPlayer(player, "");
    10361033        }
    10371034    }
    10381035
    10391036    updateGameAttributes();
     
    11601157
    11611158    // Don't set any attributes here, just show the changes in GUI
    11621159
    11631160    var mapName = g_GameAttributes.map || "";
    11641161    var mapSettings = g_GameAttributes.settings;
    1165     var numPlayers = (mapSettings.PlayerData ? mapSettings.PlayerData.length : MAX_PLAYERS);
     1162    var numPlayers = mapSettings.PlayerData ? mapSettings.PlayerData.length : g_MaxPlayers;
    11661163
    11671164    // Update some controls for clients
    11681165    if (!g_IsController)
    11691166    {
    11701167        var mapFilterSelection = Engine.GetGUIObjectByName("mapFilterSelection");
     
    14091406    let victory = translate(victories.text[victoryIdx]);
    14101407    if (victoryIdx != VICTORY_DEFAULTIDX)
    14111408        victory = "[color=\"orange\"]" + victory + "[/color]";
    14121409    playerString += translate("Victory Condition:") + " " + victory + ".\n\n" + description;
    14131410
    1414     for (var i = 0; i < MAX_PLAYERS; ++i)
     1411    for (let i = 0; i < g_MaxPlayers; ++i)
    14151412    {
    14161413        // Show only needed player slots
    14171414        Engine.GetGUIObjectByName("playerBox["+i+"]").hidden = (i >= numPlayers);
    14181415
    14191416        // Show player data or defaults as necessary
     
    15461543    {
    15471544        if (ai.data.hidden)
    15481545        {
    15491546            // If the map uses a hidden AI then don't hide it
    15501547            var usedByMap = false;
    1551             for (var i = 0; i < MAX_PLAYERS; ++i)
     1548            for (let i = 0; i < g_MaxPlayers; ++i)
    15521549                if (i < g_GameAttributes.settings.PlayerData.length &&
    15531550                    g_GameAttributes.settings.PlayerData[i].AI == ai.id)
    15541551                {
    15551552                    usedByMap = true;
    15561553                    break;
     
    15671564
    15681565    noAssignment = hostNameList.length;
    15691566    hostNameList.push("[color=\"140 140 140 255\"]" + translate("Unassigned"));
    15701567    hostGuidList.push("");
    15711568
    1572     for (var i = 0; i < MAX_PLAYERS; ++i)
     1569    for (let i = 0; i < g_MaxPlayers; ++i)
    15731570    {
    15741571        let playerSlot = i;
    15751572        let playerID = i+1; // we don't show Gaia, so first slot is ID 1
    15761573
    15771574        var selection = assignments[playerID];
     
    18111808
    18121809function updateReadyUI()
    18131810{
    18141811    if (!g_IsNetworked)
    18151812        return; // Disabled for single-player games.
    1816     var isAI = new Array(MAX_PLAYERS + 1);
     1813    var isAI = new Array(g_MaxPlayers + 1);
    18171814    for (var i = 0; i < isAI.length; ++i)
    18181815        isAI[i] = true;
    18191816    var allReady = true;
    18201817    for (var guid in g_PlayerAssignments)
    18211818    {
     
    18321829            Engine.GetGUIObjectByName("playerName[" + (g_PlayerAssignments[guid].player - 1) + "]").caption = translate(getSetting(pData, pDefs, "Name"));
    18331830            allReady = false;
    18341831        }
    18351832    }
    18361833    // AIs are always ready.
    1837     for (var playerid = 0; playerid < MAX_PLAYERS; ++playerid)
     1834    for (let playerid = 0; playerid < g_MaxPlayers; ++playerid)
    18381835    {
    18391836        if (!g_GameAttributes.settings.PlayerData[playerid])
    18401837            continue;
    18411838        var pData = g_GameAttributes.settings.PlayerData ? g_GameAttributes.settings.PlayerData[playerid] : {};
    18421839        var pDefs = g_DefaultPlayerData ? g_DefaultPlayerData[playerid] : {};
  • binaries/data/mods/public/gui/gamesetup/gamesetup.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22
    33<objects>
    44
    5     <script file="gui/common/network.js"/>
    65    <script file="gui/common/functions_civinfo.js"/>
    76    <script file="gui/common/functions_global_object.js"/>
    87    <script file="gui/common/functions_utility.js"/>
     8    <script file="gui/common/network.js"/>
     9    <script file="gui/common/settings.js"/>
    910    <script file="gui/gamesetup/gamesetup.js"/>
    1011    <!-- After gamesetup.js which defines g_VictoryConditions -->
    1112    <script directory="gui/gamesetup/victory_conditions/"/>
    1213
    1314    <!-- Add a translucent black background to fade out the menu page -->
  • binaries/data/mods/public/gui/lobby/lobby.js

     
    3333
    3434    var mapSizeFilter = Engine.GetGUIObjectByName("mapSizeFilter");
    3535    mapSizeFilter.list = g_mapSizes.shortNames;
    3636    mapSizeFilter.list_data = g_mapSizes.tiles;
    3737
     38    // Setup number-of-players filter
     39    var playersArray = Array(g_MaxPlayers).fill(0).map((v, i) => i + 1); // 1, 2, ... MaxPlayers
    3840    var playersNumberFilter = Engine.GetGUIObjectByName("playersNumberFilter");
    39     playersNumberFilter.list = [translateWithContext("player number", "Any"),2,3,4,5,6,7,8];
    40     playersNumberFilter.list_data = ["",2,3,4,5,6,7,8];
     41    playersNumberFilter.list = [translateWithContext("player number", "Any")].concat(playersArray);
     42    playersNumberFilter.list_data = [""].concat(playersArray);
    4143
    4244    var mapTypeFilter = Engine.GetGUIObjectByName("mapTypeFilter");
    4345    mapTypeFilter.list = [translateWithContext("map", "Any")].concat(g_mapTypesText);
    4446    mapTypeFilter.list_data = [""].concat(g_mapTypes);
    4547
  • binaries/data/mods/public/gui/lobby/lobby.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22
    33<objects>
    44    <script file="gui/common/functions_global_object.js"/>
    55    <script file="gui/common/functions_utility.js"/>
    6     <script file="gui/common/timer.js"/>
    76    <script file="gui/common/music.js"/>
     7    <script file="gui/common/settings.js"/>
     8    <script file="gui/common/timer.js"/>
    89
    910    <script file="gui/lobby/lobby.js"/>
    1011
    1112    <object type="image" style="ModernWindow" size="0 0 100% 100%" name="lobbyWindow">
    1213
  • binaries/data/mods/public/gui/session/session.xml

     
    66<script file="gui/common/functions_civinfo.js"/>
    77<script file="gui/common/functions_global_object.js"/>
    88<script file="gui/common/functions_utility.js"/>
    99<script file="gui/common/l10n.js"/>
    1010<script file="gui/common/music.js"/>
     11<script file="gui/common/settings.js"/>
    1112<script file="gui/common/timer.js"/>
    1213<script file="gui/common/tooltips.js"/>
    1314<!-- load all scripts in this directory -->
    1415<script directory="gui/session/"/>
    1516
  • binaries/data/mods/public/gui/summary/layout.js

     
    147147{
    148148    for (var h = 0; h < MAX_HEADINGTITLE; ++h)
    149149    {
    150150        Engine.GetGUIObjectByName("titleHeading["+ h +"]").hidden = true;
    151151        Engine.GetGUIObjectByName("Heading[" + h + "]").hidden = true;
    152         for (var p = 0; p < MAX_SLOTS; ++p)
     152        for (let p = 0; p < g_MaxPlayers; ++p)
    153153        {
    154154            Engine.GetGUIObjectByName("valueData[" + p + "][" + h + "]").hidden = true;
    155             for (var t = 0; t < MAX_TEAMS; ++t)
     155            for (let t = 0; t < g_MaxTeams; ++t)
    156156            {
    157157                Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + h + "]").hidden = true;
    158158                Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + h + "]").hidden = true;
    159159            }
    160160        }
     
    203203
    204204function updateGeneralPanelCounter(counters)
    205205{
    206206    var rowPlayerObjectWidth = 0;
    207207    var left = 0;
    208     for (var p = 0; p < MAX_SLOTS; ++p)
     208    for (let p = 0; p < g_MaxPlayers; ++p)
    209209    {
    210210        left = 240;
    211211        var counterObject;
    212212        for (var w in counters)
    213213        {
     
    218218        }
    219219        if (rowPlayerObjectWidth == 0)
    220220            rowPlayerObjectWidth = left;
    221221
    222222        var counterTotalObject;
    223         for (var t = 0; t < MAX_TEAMS; ++t)
     223        for (let t = 0; t < g_MaxTeams; ++t)
    224224        {
    225225            left = 240;
    226226            for (var w in counters)
    227227            {
    228228                counterObject = Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + w + "]");
     
    278278        Engine.GetGUIObjectByName("playerNameHeading").caption = "";
    279279}
    280280
    281281function updateObjectPlayerPosition()
    282282{
    283     for (var h = 0; h < MAX_SLOTS; ++h)
     283    for (let h = 0; h < g_MaxPlayers; ++h)
    284284    {
    285285        var playerBox = Engine.GetGUIObjectByName("playerBox[" + h + "]");
    286286        var boxSize = playerBox.size;
    287287        boxSize.top += h * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP);
    288288        boxSize.bottom = boxSize.top + PLAYER_BOX_Y_SIZE;
    289289        playerBox.size = boxSize;
    290290
    291         for (var i = 0; i < MAX_TEAMS; ++i)
     291        for (let i = 0; i < g_MaxTeams; ++i)
    292292        {
    293293            var playerBoxt = Engine.GetGUIObjectByName("playerBoxt[" + i + "][" + h + "]");
    294294            boxSize = playerBoxt.size;
    295295            boxSize.top += h * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP);
    296296            boxSize.bottom = boxSize.top + PLAYER_BOX_Y_SIZE;
  • binaries/data/mods/public/gui/summary/summary.js

     
    1 // Max player slots for any map (TODO: should read from config)
    2 const MAX_SLOTS = 8;
    3 const MAX_TEAMS = 4;
    41const MAX_HEADINGTITLE = 8;
    52
    63// const for filtering long collective headings
    74const LONG_HEADING_WIDTH = 250;
    85// Vertical size of player box