Match setup GUI revamp. Adds pop-cap and starting resource options. Refs #802

This was SVN commit r12756.
This commit is contained in:
O.Davoodi 2012-10-15 15:19:24 +00:00
parent 1fb7889539
commit 9177683653
3 changed files with 207 additions and 97 deletions

View File

@ -7,7 +7,12 @@ const DEFAULT_OFFLINE_MAP = "Acropolis 1";
const VICTORY_TEXT = ["Conquest", "None"];
const VICTORY_DATA = ["conquest", "endless"];
const VICTORY_DEFAULTIDX = 0;
const POPULATION_CAP = ["50", "100", "150", "200", "250", "300", "Unlimited"];
const POPULATION_CAP_DATA = [50, 100, 150, 200, 250, 300, 10000];
const POPULATION_CAP_DEFAULTIDX = 5;
const STARTING_RESOURCES = ["Very Low", "Low", "Medium", "High", "Very High", "Deathmatch"];
const STARTING_RESOURCES_DATA = [100, 300, 500, 1000, 3000, 50000];
const STARTING_RESOURCES_DEFAULTIDX = 1;
// Max number of players for any map
const MAX_PLAYERS = 8;
@ -53,7 +58,6 @@ Naval maps are recommended to be played with human opponents only.";
// tick handler
var g_LoadingState = 0; // 0 = not started, 1 = loading, 2 = loaded
////////////////////////////////////////////////////////////////////////////////////////////////
function init(attribs)
@ -134,6 +138,40 @@ function initMain()
numPlayersSelection.list_data = players;
numPlayersSelection.selected = MAX_PLAYERS - 1;
var populationCaps = getGUIObjectByName("populationCap");
populationCaps.list = POPULATION_CAP;
populationCaps.list_data = POPULATION_CAP_DATA;
populationCaps.selected = POPULATION_CAP_DEFAULTIDX;
populationCaps.onSelectionChange = function()
{
if (this.selected != -1)
{
g_GameAttributes.settings.PopulationCap = POPULATION_CAP_DATA[this.selected];
}
if (!g_IsInGuiUpdate)
{
updateGameAttributes();
}
}
var startingResourcesL = getGUIObjectByName("startingResources");
startingResourcesL.list = STARTING_RESOURCES;
startingResourcesL.list_data = STARTING_RESOURCES_DATA;
startingResourcesL.selected = STARTING_RESOURCES_DEFAULTIDX;
startingResourcesL.onSelectionChange = function()
{
if (this.selected != -1)
{
g_GameAttributes.settings.StartingResources = STARTING_RESOURCES_DATA[this.selected];
}
if (!g_IsInGuiUpdate)
{
updateGameAttributes();
}
}
var victoryConditions = getGUIObjectByName("victoryCondition");
victoryConditions.list = VICTORY_TEXT;
victoryConditions.list_data = VICTORY_DATA;
@ -207,7 +245,9 @@ function initMain()
getGUIObjectByName("mapFilterText").hidden = false;
getGUIObjectByName("mapSelectionText").hidden = false;
getGUIObjectByName("mapSelection").hidden = true;
getGUIObjectByName("victoryConditionText").hidden = false;
getGUIObjectByName("victoryCondition").hidden = true;
// 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)
@ -774,6 +814,7 @@ function launchGame()
selectMap(getGUIObjectByName("mapSelection").list_data[Math.floor(Math.random() *
(getGUIObjectByName("mapSelection").list.length - 1)) + 1]);
g_GameAttributes.settings.mapType = g_GameAttributes.mapType;
var numPlayers = g_GameAttributes.settings.PlayerData.length;
// Assign random civilizations to players with that choice
// (this is synchronized because we're the host)
@ -877,6 +918,10 @@ function onGameAttributesChange()
var mapSelectionBox = getGUIObjectByName("mapSelection");
mapSelectionBox.selected = mapSelectionBox.list_data.indexOf(mapName);
getGUIObjectByName("mapSelectionText").caption = getMapDisplayName(mapName);
var populationCapBox = getGUIObjectByName("populationCap");
populationCapBox.selected = populationCapBox.list_data.indexOf(mapSettings.PopulationCap);
var startingResourcesBox = getGUIObjectByName("startingResources");
startingResourcesBox.selected = startingResourcesBox.list_data.indexOf(mapSettings.StartingResources);
initMapNameList();
}
@ -887,6 +932,8 @@ function onGameAttributesChange()
var lockTeams = getGUIObjectByName("lockTeams");
var mapSize = getGUIObjectByName("mapSize");
var enableCheats = getGUIObjectByName("enableCheats");
var populationCap = getGUIObjectByName("populationCap");
var startingResources = getGUIObjectByName("startingResources");
var numPlayersText= getGUIObjectByName("numPlayersText");
var mapSizeText = getGUIObjectByName("mapSizeText");
@ -894,11 +941,17 @@ function onGameAttributesChange()
var victoryConditionText = getGUIObjectByName("victoryConditionText");
var lockTeamsText = getGUIObjectByName("lockTeamsText");
var enableCheatsText = getGUIObjectByName("enableCheatsText");
var populationCapText = getGUIObjectByName("populationCapText");
var startingResourcesText = getGUIObjectByName("startingResourcesText");
var sizeIdx = (g_MapSizes.tiles.indexOf(mapSettings.Size) != -1 ? g_MapSizes.tiles.indexOf(mapSettings.Size) : g_MapSizes.default);
var victoryIdx = (VICTORY_DATA.indexOf(mapSettings.GameType) != -1 ? VICTORY_DATA.indexOf(mapSettings.GameType) : VICTORY_DEFAULTIDX);
enableCheats.checked = (g_GameAttributes.settings.CheatsEnabled === undefined || !g_GameAttributes.settings.CheatsEnabled ? false : true)
enableCheatsText.caption = (enableCheats.checked ? "Yes" : "No");
populationCap.selected = (POPULATION_CAP_DATA.indexOf(mapSettings.PopulationCap) != -1 ? POPULATION_CAP_DATA.indexOf(mapSettings.PopulationCap) : POPULATION_CAP_DEFAULTIDX);
populationCapText.caption = POPULATION_CAP[populationCap.selected];
startingResources.selected = (STARTING_RESOURCES_DATA.indexOf(mapSettings.StartingResources) != -1 ? STARTING_RESOURCES_DATA.indexOf(mapSettings.StartingResources) : STARTING_RESOURCES_DEFAULTIDX);
startingResourcesText.caption = STARTING_RESOURCES[startingResources.selected];
// Handle map type specific logic
switch (g_GameAttributes.mapType)
{
@ -911,13 +964,17 @@ function onGameAttributesChange()
revealMap.hidden = false;
victoryCondition.hidden = false;
lockTeams.hidden = false;
populationCap.hidden = false;
startingResources.hidden = false;
numPlayersText.hidden = true;
mapSizeText.hidden = true;
revealMapText.hidden = true;
victoryConditionText.hidden = true;
lockTeamsText.hidden = true;
populationCapText.hidden = true;
startingResourcesText.hidden = true;
// Update map preview
getGUIObjectByName("mapPreview").sprite = "cropped:(0.78125,0.5859375)session/icons/mappreview/" + getMapPreview(mapName);
@ -939,10 +996,13 @@ function onGameAttributesChange()
revealMapText.hidden = false;
victoryConditionText.hidden = false;
lockTeamsText.hidden = false;
populationCap.hidden = true;
populationCapText.hidden = false;
startingResources.hidden = true;
startingResourcesText.hidden = false;
// Update map preview
getGUIObjectByName("mapPreview").sprite = "cropped:(0.78125,0.5859375)session/icons/mappreview/" + getMapPreview(mapName);
numPlayersText.caption = numPlayers;
mapSizeText.caption = g_MapSizes.names[sizeIdx];
revealMapText.caption = (mapSettings.RevealMap ? "Yes" : "No");
@ -964,7 +1024,11 @@ function onGameAttributesChange()
revealMapText.hidden = false;
victoryConditionText.hidden = false;
lockTeamsText.hidden = false;
populationCap.hidden = true;
populationCapText.hidden = false;
startingResources.hidden = true;
startingResourcesText.hidden = false;
// Update map preview
getGUIObjectByName("mapPreview").sprite = "cropped:(0.78125,0.5859375)session/icons/mappreview/" + getMapPreview(mapName);
numPlayersText.caption = numPlayers;
@ -972,7 +1036,7 @@ function onGameAttributesChange()
revealMapText.caption = (mapSettings.RevealMap ? "Yes" : "No");
victoryConditionText.caption = VICTORY_TEXT[victoryIdx];
lockTeamsText.caption = (mapSettings.LockTeams === undefined || mapSettings.LockTeams ? "Yes" : "No");
getGUIObjectByName("populationCap").selected = POPULATION_CAP_DEFAULTIDX;
break;
default:
@ -1326,6 +1390,11 @@ function addChatMessage(msg)
getGUIObjectByName("chatText").caption = g_ChatMessages.join("\n");
}
function toggleMoreOptions()
{
getGUIObjectByName("moreOptions").hidden = !getGUIObjectByName("moreOptions").hidden;
}
////////////////////////////////////////////////////////////////////////////////////////////////
// Basic map filters API

View File

@ -32,8 +32,29 @@
<object style="TitleText" type="text" size="50%-128 4 50%+128 36">
Match Setup
</object>
<!-- Number of Players-->
<object size="24 26 224 54">
<!-- Number of Players-->
<object size="0 0 150 28">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Number of players:</object>
</object>
<!-- Number of Players-->
<object size="150 0 200 28">
<object name="numPlayersText" size="0 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="numPlayersSelection"
type="dropdown"
style="StoneDropDown"
size="0 0 100% 28"
tooltip_style="onscreenToolTip"
tooltip="Select number of players.">
<action on="SelectionChange">selectNumPlayers(this.list_data[this.selected]);</action>
</object>
</object>
</object>
<!-- Player assignments -->
<object size="24 59 100%-440 358" type="image" sprite="BackgroundIndentFillDark" name="playerAssignmentsPannel">
@ -77,13 +98,14 @@
<!-- Map selection -->
<object size="20 363 11% 455" name="mapTypeSelectionTooltip">
<object size="100%-425 363 100%-325 455" name="mapTypeSelectionTooltip">
<object type="text" style="RightLabelText" size="0 66 100% 88">Select Map:</object>
<object type="text" style="RightLabelText" size="0 0 100% 28">Match Type:</object>
<object type="text" style="RightLabelText" size="0 34 100% 60">Map Filter:</object>
<object type="text" style="RightLabelText" size="0 94 100% 122">Map Size:</object>
</object>
<object size="10.9% 363 28% 423" name="mapFilterSelectionTooltip">
<object size="100%-327 363 100%-25 423" name="mapFilterSelectionTooltip">
<object name="mapTypeText" type="text" style="LeftLabelText" size="0 0 100% 28" hidden="true"/>
<object name="mapFilterText" type="text" style="LeftLabelText" size="0 32 100% 60" hidden="true"/>
<object name="mapSelectionText" type="text" style="LeftLabelText" size="0 64 100% 92" hidden="true"/>
@ -92,7 +114,7 @@
<object name="mapTypeSelection"
type="dropdown"
style="StoneDropDown"
size="10.9% 363 28% 391"
size="100%-327 363 100%-25 391"
tooltip_style="onscreenToolTip"
tooltip="Select a map type.">
<action on="SelectionChange">selectMapType(this.list_data[this.selected]);</action>
@ -101,13 +123,13 @@
<object name="mapFilterSelection"
type="dropdown"
style="StoneDropDown"
size="10.9% 395 28% 423"
size="100%-327 395 100%-25 423"
tooltip_style="onscreenToolTip"
tooltip="Select a map filter.">
<action on="SelectionChange">selectMapFilter(this.list[this.selected]);</action>
</object>
<object size="10.9% 427 28% 455" name="mapSelectionPannel" z="55">
<object size="100%-327 427 100%-25 455" name="mapSelectionPannel" z="55">
<object name="mapSelection"
style="StoneDropDown"
@ -120,17 +142,14 @@
</object>
<object size="20 463.8 11% 615" name="enableCheatsDesc" hidden="true">
<object size="0 0 100% 32">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Cheats:</object>
</object>
</object>
<object size="100%-327 459 100%-25 487">
<object size="10.9% 463.8 28% 615">
<object size="0 0 100% 32">
<object name="enableCheatsText" size="0 0 100% 100%" type="text" style="LeftLabelText" hidden="true"/>
<object name="enableCheats" size="0 50%-8 16 50%+8" type="checkbox" style="StoneCrossBox" hidden="true" tooltip_style="onscreenToolTip" tooltip="Toggle the usability of cheats."/>
<!-- Map Size-->
<object size="0 0 100% 100%">
<object name="mapSizeText" size="0 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="mapSize" size="0 0 100% 28" type="dropdown" style="StoneDropDown" hidden="true" tooltip_style="onscreenToolTip" tooltip="Select map size. (Larger sizes may reduce performance.)"/>
</object>
</object>
<!-- Map Preview -->
@ -138,89 +157,106 @@
<object type="image" sprite="snMapPreview" size="1 1 401 301" name="mapPreview"/>
</object>
<!-- Options -->
<object name="gameOptionsBox" size="28.04% 363 60% 615">
<!-- First Column -->
<object size="0 0 42.3% 50%">
<!-- Number of Players-->
<object size="0 0 100% 28">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Number of players:</object>
</object>
<object size="0 30 100% 58">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Map size:</object>
</object>
<object size="0 60 100% 88">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Victory condition:</object>
</object>
</object>
<!-- Second Column -->
<object size="41% 0 94% 50%">
<!-- Number of Players-->
<object size="0 0 100% 28">
<object name="numPlayersText" size="0 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="numPlayersSelection"
type="dropdown"
style="StoneDropDown"
size="0 0 100% 28"
tooltip_style="onscreenToolTip"
tooltip="Select number of players.">
<action on="SelectionChange">selectNumPlayers(this.list_data[this.selected]);</action>
</object>
</object>
<object size="0 30 100% 58">
<object name="mapSizeText" size="0 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="mapSize" size="0 0 100% 30" type="dropdown" style="StoneDropDown" hidden="true" tooltip_style="onscreenToolTip" tooltip="Select map size. (Larger sizes may reduce performance.)"/>
</object>
<object size="0 60 100% 88">
<object name="victoryConditionText" size="0 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="victoryCondition" size="0 0 100% 30" type="dropdown" style="StoneDropDown" hidden="true" tooltip_style="onscreenToolTip" tooltip="Select victory condition."/>
</object>
</object>
<!-- Third Column -->
<object size="0 40% 42.3% 100%">
<object size="0 0 100% 32">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Reveal map:</object>
</object>
<object size="0 32 100% 64">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Teams locked:</object>
</object>
</object>
<!-- Fourth Column -->
<object size="41% 40% 94% 100%">
<object size="0 0 100% 32">
<object name="revealMapText" size="0 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="revealMap" size="0 50%-8 16 50%+8" type="checkbox" style="StoneCrossBox" hidden="true" tooltip_style="onscreenToolTip" tooltip="Toggle reveal map."/>
</object>
<object size="0 32 100% 64">
<object name="lockTeamsText" size="0 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="lockTeams" size="0 50%-8 16 50%+8" type="checkbox" style="StoneCrossBox" hidden="true" tooltip_style="onscreenToolTip" tooltip="Toggle locked teams."/>
</object>
</object>
<!-- End Options -->
</object>
<!-- Map Description -->
<object size="100%-425 370 100%-25 100%-60">
<object size="100%-425 497 100%-25 100%-60">
<object name="mapInfoName" type="text" style="LeftLabelText" size="0 0 100% 30"/>
<object type="image" sprite="BackgroundIndentFillDark" size="0 30 100% 100%">
<object name="mapInfoDescription" type="text" style="MapDescription" size="0 0 100% 100%"/>
</object>
</object>
<!-- Options -->
<object name="gameOptionsBox" size="100%-425 497 100%-25 525">
<!-- More Options Button -->
<object
name="showMoreOptions"
type="button"
style="StoneButton"
size="100%-120 0 100% 28"
tooltip_style="onscreenToolTip"
tooltip="See more game options"
>
More Options
<action on="Press">toggleMoreOptions();</action>
</object>
<!-- End Options -->
</object>
<!-- More Options -->
<object name="moreOptions" type="image" sprite="StoneWindow" size="50%-190 50%-120 50%+190 50%+155" z="55" hidden="true">
<object style="TitleText" type="text" size="50%-128 11 50%+128 27">
More Options
</object>
<object size="14 38 94% 66">
<object size="0 0 40% 28">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Victory condition:</object>
</object>
<object name="victoryConditionText" size="40% 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="victoryCondition" size="40% 0 100% 28" type="dropdown" style="StoneDropDown" hidden="true" tooltip_style="onscreenToolTip" tooltip="Select victory condition."/>
</object>
<object size="14 68 94% 96">
<object size="0 0 40% 28">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Population Cap:</object>
</object>
<object name="populationCapText" size="40% 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="populationCap" size="40% 0 100% 28" type="dropdown" style="StoneDropDown" hidden="true" tooltip_style="onscreenToolTip" tooltip="Select population cap."/>
</object>
<object size="14 98 94% 126">
<object size="0 0 40% 28">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Starting Resources:</object>
</object>
<object name="startingResourcesText" size="40% 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="startingResources" size="40% 0 100% 28" type="dropdown" style="StoneDropDown" hidden="true" tooltip_style="onscreenToolTip" tooltip="Select the game's starting resources."/>
</object>
<object size="14 128 94% 216">
<object size="0 0 40% 28">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Reveal map:</object>
</object>
<object size="0 30 40% 58">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Teams locked:</object>
</object>
<object size="0 60 40% 88" name="enableCheatsDesc" hidden="true">
<object size="0 0 100% 100%" type="text" style="RightLabelText">Cheats:</object>
</object>
<object size="40% 0 100% 28">
<object name="revealMapText" size="0 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="revealMap" size="0 50%-8 16 50%+8" type="checkbox" style="StoneCrossBox" hidden="true" tooltip_style="onscreenToolTip" tooltip="Toggle reveal map."/>
</object>
<object size="40% 30 100% 58">
<object name="lockTeamsText" size="0 0 100% 100%" type="text" style="LeftLabelText"/>
<object name="lockTeams" size="0 50%-8 16 50%+8" type="checkbox" style="StoneCrossBox" hidden="true" tooltip_style="onscreenToolTip" tooltip="Toggle locked teams."/>
</object>
<object size="40% 60 100% 88">
<object name="enableCheatsText" size="0 0 100% 100%" type="text" style="LeftLabelText" hidden="true"/>
<object name="enableCheats" size="0 50%-8 16 50%+8" type="checkbox" style="StoneCrossBox" hidden="true" tooltip_style="onscreenToolTip" tooltip="Toggle the usability of cheats."/>
</object>
</object>
<!-- Hide More Options Button -->
<object
name="hideMoreOptions"
type="button"
style="StoneButton"
size="50%-70 218 50%+70 246"
tooltip_style="onscreenToolTip"
tooltip="Close more game options window"
>
OK
<action on="Press">toggleMoreOptions();</action>
</object>
<!-- End More Options -->
</object>
<!-- Chat window -->
<object name="chatPanel" size="24 540 100%-435 100%-58" type="image" sprite="BackgroundIndentFillDark">
<object name="chatPanel" size="24 370 100%-435 100%-58" type="image" sprite="BackgroundIndentFillDark">
<object name="chatText" size="2 2 100%-2 100%-26" type="text" style="ChatPanel"/>
<object name="chatInput" size="4 100%-24 100%-76 100%-4" type="input" style="StoneInput">

View File

@ -22,6 +22,11 @@ function InitGame(settings)
cmpPlayer.SetAI(true);
cmpPlayer.SetCheatEnabled(true);
}
cmpPlayer.maxPop = settings.PopulationCap;
if (settings.mapType !== "scenario")
for (var resouces in cmpPlayer.resourceCount)
cmpPlayer.resourceCount[resouces] = settings.StartingResources;
}
}