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:
@@ -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/"/>
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user