1
0
forked from mirrors/0ad

Move player and team number limits to a centralized file which will also eventually hold various kinds of settings.

Patch by elexis, refs #3355

This was SVN commit r16975.
This commit is contained in:
Itms
2015-09-02 17:45:01 +00:00
parent 8dde1cda94
commit 0c14436c26
7 changed files with 50 additions and 38 deletions
@@ -0,0 +1,14 @@
/**
* The maximum number of players that the engine supports.
* TODO: Maybe we can support more than 8 players sometime.
*/
const g_MaxPlayers = 8;
/**
* The maximum number of teams allowed.
*/
const g_MaxTeams = 4;
// The following settings will be loaded here:
// AIDifficulties, Ceasefire, GameSpeeds, GameTypes, MapTypes,
// MapSizes, PlayerDefaults, PopulationCapacity, StartingResources
@@ -18,8 +18,6 @@ const STARTING_RESOURCES_DEFAULTIDX = 1;
const 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")];
const CEASEFIRE_DATA = [0, 5, 10, 15, 20, 30, 45, 60];
const CEASEFIRE_DEFAULTIDX = 0;
// Max number of players for any map
const MAX_PLAYERS = 8;
////////////////////////////////////////////////////////////////////////////////////////////////
@@ -180,13 +178,11 @@ function initMain()
initMapNameList();
var numPlayersSelection = Engine.GetGUIObjectByName("numPlayersSelection");
var players = [];
for (var i = 1; i <= MAX_PLAYERS; ++i)
players.push(i);
numPlayersSelection.list = players;
numPlayersSelection.list_data = players;
numPlayersSelection.selected = MAX_PLAYERS - 1;
let playersArray = Array(g_MaxPlayers).fill(0).map((v, i) => i + 1); // 1, 2, ..., MaxPlayers
let numPlayersSelection = Engine.GetGUIObjectByName("numPlayersSelection");
numPlayersSelection.list = playersArray;
numPlayersSelection.list_data = playersArray;
numPlayersSelection.selected = g_MaxPlayers - 1;
var gameSpeed = Engine.GetGUIObjectByName("gameSpeed");
gameSpeed.hidden = false;
@@ -313,7 +309,7 @@ function initMain()
// Disable player and game options controls
// TODO: Shouldn't players be able to choose their own assignment?
for (var i = 0; i < MAX_PLAYERS; ++i)
for (let i = 0; i < g_MaxPlayers; ++i)
{
Engine.GetGUIObjectByName("playerAssignment["+i+"]").hidden = true;
Engine.GetGUIObjectByName("playerCiv["+i+"]").hidden = true;
@@ -364,7 +360,7 @@ function initMain()
// Settings for all possible player slots
var boxSpacing = 32;
for (var i = 0; i < MAX_PLAYERS; ++i)
for (let i = 0; i < g_MaxPlayers; ++i)
{
// Space player boxes
var box = Engine.GetGUIObjectByName("playerBox["+i+"]");
@@ -375,9 +371,10 @@ function initMain()
box.size = boxSize;
// Populate team dropdowns
var team = Engine.GetGUIObjectByName("playerTeam["+i+"]");
team.list = [translateWithContext("team", "None"), "1", "2", "3", "4"];
team.list_data = [-1, 0, 1, 2, 3];
let team = Engine.GetGUIObjectByName("playerTeam["+i+"]");
let teamsArray = Array(g_MaxTeams).fill(0).map((v, i) => i + 1); // 1, 2, ... MaxTeams
team.list = [translateWithContext("team", "None")].concat(teamsArray); // "None", 1, 2, ..., maxTeams
team.list_data = [-1].concat(teamsArray.map(team => team - 1)); // -1, 0, ..., (maxTeams-1)
team.selected = 0;
let playerSlot = i; // declare for inner function use
@@ -591,12 +588,12 @@ function initCivNameList()
var civListNames = [ civ.name for each (civ in civList) ];
var civListCodes = [ civ.code for each (civ in civList) ];
// Add random civ to beginning of list
// Add random civ to beginning of list
civListNames.unshift('[color="orange"]' + translateWithContext("civilization", "Random") + '[/color]');
civListCodes.unshift("random");
civListCodes.unshift("random");
// Update the dropdowns
for (var i = 0; i < MAX_PLAYERS; ++i)
for (let i = 0; i < g_MaxPlayers; ++i)
{
var civ = Engine.GetGUIObjectByName("playerCiv["+i+"]");
civ.list = civListNames;
@@ -1031,7 +1028,7 @@ function selectMap(name)
{ // Unassign extra players
var player = g_PlayerAssignments[guid].player;
if (player <= MAX_PLAYERS && player > numPlayers)
if (player <= g_MaxPlayers && player > numPlayers)
Engine.AssignNetworkPlayer(player, "");
}
}
@@ -1162,7 +1159,7 @@ function onGameAttributesChange()
var mapName = g_GameAttributes.map || "";
var mapSettings = g_GameAttributes.settings;
var numPlayers = (mapSettings.PlayerData ? mapSettings.PlayerData.length : MAX_PLAYERS);
var numPlayers = mapSettings.PlayerData ? mapSettings.PlayerData.length : g_MaxPlayers;
// Update some controls for clients
if (!g_IsController)
@@ -1411,7 +1408,7 @@ function onGameAttributesChange()
victory = "[color=\"orange\"]" + victory + "[/color]";
playerString += translate("Victory Condition:") + " " + victory + ".\n\n" + description;
for (var i = 0; i < MAX_PLAYERS; ++i)
for (let i = 0; i < g_MaxPlayers; ++i)
{
// Show only needed player slots
Engine.GetGUIObjectByName("playerBox["+i+"]").hidden = (i >= numPlayers);
@@ -1548,7 +1545,7 @@ function updatePlayerList()
{
// If the map uses a hidden AI then don't hide it
var usedByMap = false;
for (var i = 0; i < MAX_PLAYERS; ++i)
for (let i = 0; i < g_MaxPlayers; ++i)
if (i < g_GameAttributes.settings.PlayerData.length &&
g_GameAttributes.settings.PlayerData[i].AI == ai.id)
{
@@ -1569,7 +1566,7 @@ function updatePlayerList()
hostNameList.push("[color=\"140 140 140 255\"]" + translate("Unassigned"));
hostGuidList.push("");
for (var i = 0; i < MAX_PLAYERS; ++i)
for (let i = 0; i < g_MaxPlayers; ++i)
{
let playerSlot = i;
let playerID = i+1; // we don't show Gaia, so first slot is ID 1
@@ -1813,7 +1810,7 @@ function updateReadyUI()
{
if (!g_IsNetworked)
return; // Disabled for single-player games.
var isAI = new Array(MAX_PLAYERS + 1);
var isAI = new Array(g_MaxPlayers + 1);
for (var i = 0; i < isAI.length; ++i)
isAI[i] = true;
var allReady = true;
@@ -1834,8 +1831,8 @@ function updateReadyUI()
}
}
// AIs are always ready.
for (var playerid = 0; playerid < MAX_PLAYERS; ++playerid)
{
for (let playerid = 0; playerid < g_MaxPlayers; ++playerid)
{
if (!g_GameAttributes.settings.PlayerData[playerid])
continue;
var pData = g_GameAttributes.settings.PlayerData ? g_GameAttributes.settings.PlayerData[playerid] : {};
@@ -2,10 +2,11 @@
<objects>
<script file="gui/common/network.js"/>
<script file="gui/common/functions_civinfo.js"/>
<script file="gui/common/functions_global_object.js"/>
<script file="gui/common/functions_utility.js"/>
<script file="gui/common/network.js"/>
<script file="gui/common/settings.js"/>
<script file="gui/gamesetup/gamesetup.js"/>
<!-- After gamesetup.js which defines g_VictoryConditions -->
<script directory="gui/gamesetup/victory_conditions/"/>
+4 -2
View File
@@ -35,9 +35,11 @@ function init(attribs)
mapSizeFilter.list = g_mapSizes.shortNames;
mapSizeFilter.list_data = g_mapSizes.tiles;
// Setup number-of-players filter
var playersArray = Array(g_MaxPlayers).fill(0).map((v, i) => i + 1); // 1, 2, ... MaxPlayers
var playersNumberFilter = Engine.GetGUIObjectByName("playersNumberFilter");
playersNumberFilter.list = [translateWithContext("player number", "Any"),2,3,4,5,6,7,8];
playersNumberFilter.list_data = ["",2,3,4,5,6,7,8];
playersNumberFilter.list = [translateWithContext("player number", "Any")].concat(playersArray);
playersNumberFilter.list_data = [""].concat(playersArray);
var mapTypeFilter = Engine.GetGUIObjectByName("mapTypeFilter");
mapTypeFilter.list = [translateWithContext("map", "Any")].concat(g_mapTypesText);
@@ -3,8 +3,9 @@
<objects>
<script file="gui/common/functions_global_object.js"/>
<script file="gui/common/functions_utility.js"/>
<script file="gui/common/timer.js"/>
<script file="gui/common/music.js"/>
<script file="gui/common/settings.js"/>
<script file="gui/common/timer.js"/>
<script file="gui/lobby/lobby.js"/>
@@ -149,10 +149,10 @@ function resetGeneralPanel()
{
Engine.GetGUIObjectByName("titleHeading["+ h +"]").hidden = true;
Engine.GetGUIObjectByName("Heading[" + h + "]").hidden = true;
for (var p = 0; p < MAX_SLOTS; ++p)
for (let p = 0; p < g_MaxPlayers; ++p)
{
Engine.GetGUIObjectByName("valueData[" + p + "][" + h + "]").hidden = true;
for (var t = 0; t < MAX_TEAMS; ++t)
for (let t = 0; t < g_MaxTeams; ++t)
{
Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + h + "]").hidden = true;
Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + h + "]").hidden = true;
@@ -205,7 +205,7 @@ function updateGeneralPanelCounter(counters)
{
var rowPlayerObjectWidth = 0;
var left = 0;
for (var p = 0; p < MAX_SLOTS; ++p)
for (let p = 0; p < g_MaxPlayers; ++p)
{
left = 240;
var counterObject;
@@ -220,7 +220,7 @@ function updateGeneralPanelCounter(counters)
rowPlayerObjectWidth = left;
var counterTotalObject;
for (var t = 0; t < MAX_TEAMS; ++t)
for (let t = 0; t < g_MaxTeams; ++t)
{
left = 240;
for (var w in counters)
@@ -280,7 +280,7 @@ function updateGeneralPanelTeams()
function updateObjectPlayerPosition()
{
for (var h = 0; h < MAX_SLOTS; ++h)
for (let h = 0; h < g_MaxPlayers; ++h)
{
var playerBox = Engine.GetGUIObjectByName("playerBox[" + h + "]");
var boxSize = playerBox.size;
@@ -288,7 +288,7 @@ function updateObjectPlayerPosition()
boxSize.bottom = boxSize.top + PLAYER_BOX_Y_SIZE;
playerBox.size = boxSize;
for (var i = 0; i < MAX_TEAMS; ++i)
for (let i = 0; i < g_MaxTeams; ++i)
{
var playerBoxt = Engine.GetGUIObjectByName("playerBoxt[" + i + "][" + h + "]");
boxSize = playerBoxt.size;
@@ -1,7 +1,4 @@
// Max player slots for any map (TODO: should read from config)
const MAX_SLOTS = 8;
const MAX_TEAMS = 4;
const MAX_HEADINGTITLE = 8;
// const for filtering long collective headings
const LONG_HEADING_WIDTH = 250;