Commented out most of old styles.xml and changed references to new styles, outlined tabs in summary, fixed chat color in multiplayer setup

This was SVN commit r10130.
This commit is contained in:
WhiteTreePaladin 2011-08-28 21:32:35 +00:00
parent 769a927446
commit ded514644e
10 changed files with 480 additions and 442 deletions

View File

@ -4,10 +4,6 @@
<!--
==========================================
MENU TEXT STYLES
@ -98,6 +94,14 @@
text_valign="center"
/>
<style name="ChatText"
font="serif-9"
textcolor="white"
text_align="left"
text_valign="top"
/>
@ -114,7 +118,7 @@
MENU WINDOW STYLES
==========================================
-->
<style name="TranslucentPanel"
sprite="BackgroundTranslucent"
buffer_zone="10"
@ -123,7 +127,7 @@
text_align="left"
text_valign="top"
/>
<style name="TranslucentPanelThinBorder"
sprite="TranslucentPanelThinBorder"
buffer_zone="10"
@ -139,7 +143,7 @@
text_align="left"
text_valign="top"
/>
<style name="SubmenuPanel"
sprite="SubmenuPanel"
buffer_zone="10"

View File

@ -27,13 +27,13 @@
==========================================
-->
<style name="thinWheatWindow"
<!-- <style name="thinWheatWindow"
sprite="thinWheatWindowSand"
buffer_zone="10"
text_align="left"
text_valign="top"
/>
<style name="wheatWindow"
sprite="wheatWindowSand"
buffer_zone="10"
@ -54,7 +54,7 @@
sprite="wheatWindowTitle"
text_align="center"
text_valign="center"
/>
/>-->
<!--
==========================================
@ -62,7 +62,7 @@
==========================================
-->
<style name="skin*Hele*Window"
<!-- <style name="skin*Hele*Window"
sprite="bkGraniteBorderBlack"
buffer_zone="10"
text_align="left"
@ -83,7 +83,7 @@
sprite_pressed="wheatButtonOver"
text_align="center"
text_valign="center"
/>
/>-->
<!--
==========================================
@ -91,7 +91,7 @@
==========================================
-->
<style name="wheatButton"
<!-- <style name="wheatButton"
sprite="wheatButton"
sprite_disabled="wheatButtonDisabled"
sprite_over="wheatButtonOver"
@ -186,8 +186,8 @@
textcolor_selected="white"
text_align="left"
text_valign="center"
/>
/>-->
<!--
This control is new, so here's a summary:
* dropdown_buffer: vertical gap between dropdown and list
@ -207,7 +207,7 @@
* textcolor_selected=text color hobered item
-->
<style name="wheatDropDown"
<!-- <style name="wheatDropDown"
dropdown_buffer="1"
font="serif-13"
textcolor="black"
@ -229,7 +229,7 @@
scrollbar="true"
scrollbar_style="wheatScrollBar"
/>
/>-->
<!--
==========================================
@ -243,12 +243,12 @@
=============================================================
-->
<style name="wheatTextHeadMaxBlack"
<!-- <style name="wheatTextHeadMaxBlack"
ghost="true"
font="serif-bold-18"
text_align="center"
textcolor="black"
/>
/>-->
<!--
=============================================================
@ -257,11 +257,11 @@
=============================================================
-->
<style name="wheatTextHeadBlack"
<!-- <style name="wheatTextHeadBlack"
ghost="true"
font="serif-16"
textcolor="black"
/>
/>-->
<!--
=============================================================
@ -270,11 +270,11 @@
=============================================================
-->
<style name="wheatTextLabelBlack"
<!-- <style name="wheatTextLabelBlack"
ghost="true"
font="serif-14"
textcolor="black"
/>
/>-->
<!--
=============================================================
@ -283,7 +283,7 @@
=============================================================
-->
<style name="fancyTextHeadGold"
<!-- <style name="fancyTextHeadGold"
ghost="true"
font="serif-16"
textcolor="gold"
@ -293,7 +293,7 @@
ghost="true"
font="serif-14"
textcolor="white"
/>
/>-->
<!--
==========================================
@ -301,8 +301,8 @@
==========================================
-->
<style name="wheatBorderBlack"
scrollbar_style="wheatScrollBar"
<!-- <style name="wheatBorderBlack"
scrollbar_style="wheatScrollBar"
sprite="bkBorderBlack"
sprite_selectarea="bkFillGray"
textcolor="black"
@ -322,7 +322,7 @@
sprite_selectarea="bkFillGray"
textcolor="black"
textcolor_selected="white"
/>
/>-->
<!--
==========================================
@ -330,12 +330,12 @@
==========================================
-->
<style name="wheatProgressBarBlue"
<!-- <style name="wheatProgressBarBlue"
sprite_background="bkBorderBlack"
sprite_bar="bkBlueBorderBlack"
ghost="true"
tooltip_style="snToolTip"
tooltip="(TBA)"
/>
/>-->
</styles>

View File

@ -42,7 +42,7 @@ var g_MapData = {};
var g_CivData = {};
var g_MapFilters = [];
// To prevent the display locking up while we load the map metadata,
// we'll start with a 'loading' message and switch to the main screen in the
// tick handler
@ -76,45 +76,45 @@ function initMain()
{
// Load AI list
g_AIs = Engine.GetAIs();
// Sort AIs by displayed name
g_AIs.sort(function (a, b) {
return a.data.name < b.data.name ? -1 : b.data.name < a.data.name ? +1 : 0;
});
// Get default player data - remove gaia
g_DefaultPlayerData = initPlayerDefaults();
g_DefaultPlayerData.shift();
g_MapSizes = initMapSizes();
// Init civs
initCivNameList();
// Init map types
var mapTypes = getGUIObjectByName("mapTypeSelection");
mapTypes.list = ["Scenario","Random"];
mapTypes.list_data = ["scenario","random"];
// Setup map filters - will appear in order they are added
addFilter("Default", function(settings) { return settings && !keywordTestOR(settings.Keywords, ["demo", "hidden"]); });
addFilter("Demo Maps", function(settings) { return settings && keywordTestAND(settings.Keywords, ["demo"]); });
addFilter("Old Maps", function(settings) { return !settings; });
addFilter("All Maps", function(settings) { return true; });
// Populate map filters dropdown
var mapFilters = getGUIObjectByName("mapFilterSelection");
mapFilters.list = getFilters();
g_GameAttributes.mapFilter = "Default";
// Setup controls for host only
if (g_IsController)
{
mapTypes.selected = 0;
mapFilters.selected = 0;
initMapNameList();
var numPlayersSelect = getGUIObjectByName("numPlayersSelection");
var players = [];
for (var i = 1; i <= MAX_PLAYERS; ++i)
@ -122,7 +122,7 @@ function initMain()
numPlayersSelect.list = players;
numPlayersSelect.list_data = players;
numPlayersSelect.selected = MAX_PLAYERS - 1;
var victoryConditions = getGUIObjectByName("victoryCondition");
victoryConditions.list = VICTORY_TEXT;
victoryConditions.list_data = VICTORY_DATA;
@ -132,14 +132,14 @@ function initMain()
{
g_GameAttributes.settings.GameType = VICTORY_DATA[this.selected];
}
if (!g_IsInGuiUpdate)
{
updateGameAttributes();
}
};
victoryConditions.selected = VICTORY_DEFAULTIDX;
var mapSize = getGUIObjectByName("mapSize");
mapSize.list = g_MapSizes.names;
mapSize.list_data = g_MapSizes.tiles;
@ -149,27 +149,27 @@ function initMain()
{
g_GameAttributes.settings.Size = g_MapSizes.tiles[this.selected];
}
if (!g_IsInGuiUpdate)
{
updateGameAttributes();
}
};
getGUIObjectByName("revealMap").onPress = function()
{ // Update attributes so other players can see change
g_GameAttributes.settings.RevealMap = this.checked;
if (!g_IsInGuiUpdate)
{
updateGameAttributes();
}
};
getGUIObjectByName("lockTeams").onPress = function()
{ // Update attributes so other players can see change
g_GameAttributes.settings.LockTeams = this.checked;
if (!g_IsInGuiUpdate)
{
updateGameAttributes();
@ -183,7 +183,7 @@ function initMain()
getGUIObjectByName("mapTypeSelection").hidden = true;
getGUIObjectByName("mapFilterSelection").hidden = true;
getGUIObjectByName("mapSelection").enabled = false;
// 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)
@ -192,20 +192,20 @@ function initMain()
getGUIObjectByName("playerCiv["+i+"]").hidden = true;
getGUIObjectByName("playerTeam["+i+"]").hidden = true;
}
getGUIObjectByName("numPlayersBox").hidden = true;
// Disable "start game" button
// TODO: Perhaps replace this with a "ready" button, and require host to wait?
getGUIObjectByName("startGame").enabled = false;
}
// Set up offline-only bits:
if (!g_IsNetworked)
{
getGUIObjectByName("chatPanel").hidden = true;
}
// Settings for all possible player slots
var boxSpacing = 32;
for (var i = 0; i < MAX_PLAYERS; ++i)
@ -217,13 +217,13 @@ function initMain()
boxSize.top = i * boxSpacing;
boxSize.bottom = i * boxSpacing + h;
box.size = boxSize;
// Populate team dropdowns
var team = getGUIObjectByName("playerTeam["+i+"]");
team.list = ["None", "1", "2", "3", "4"];
team.list_data = [-1, 0, 1, 2, 3];
team.selected = 0;
let playerSlot = i; // declare for inner function use
team.onSelectionChange = function()
{ // Update team
@ -231,13 +231,13 @@ function initMain()
{
g_GameAttributes.settings.PlayerData[playerSlot].Team = this.selected - 1;
}
if (!g_IsInGuiUpdate)
{
updateGameAttributes();
}
};
// Set events
var civ = getGUIObjectByName("playerCiv["+i+"]");
civ.onSelectionChange = function()
@ -246,14 +246,14 @@ function initMain()
{
g_GameAttributes.settings.PlayerData[playerSlot].Civ = this.list_data[this.selected];
}
if (!g_IsInGuiUpdate)
{
updateGameAttributes();
}
};
}
if (g_IsNetworked)
{
// For multiplayer, focus the chat input box by default
@ -281,13 +281,13 @@ function handleNetMessage(message)
Engine.PopGuiPage();
reportDisconnect(message.reason);
break;
default:
error("Unrecognised netstatus type "+message.status);
break;
}
break;
case "gamesetup":
if (message.data) // (the host gets undefined data on first connect, so skip that)
{
@ -296,7 +296,7 @@ function handleNetMessage(message)
onGameAttributesChange();
break;
case "players":
// Find and report all joinings/leavings
for (var host in message.hosts)
@ -317,15 +317,15 @@ function handleNetMessage(message)
g_PlayerAssignments = message.hosts;
updatePlayerList();
break;
case "start":
Engine.SwitchGuiPage("page_loading.xml", {
"attribs": g_GameAttributes,
"isNetworked" : g_IsNetworked,
"attribs": g_GameAttributes,
"isNetworked" : g_IsNetworked,
"playerAssignments": g_PlayerAssignments
});
break;
case "chat":
addChatMessage({ "type": "message", "guid": message.guid, "text": message.text });
break;
@ -339,13 +339,13 @@ function handleNetMessage(message)
function getMapDisplayName(map)
{
var mapData = loadMapData(map);
if (!mapData || !mapData.settings || !mapData.settings.Name)
{ // Give some msg that map format is unsupported
log("Map data missing in scenario '"+map+"' - likely unsupported format");
return map;
}
return mapData.settings.Name;
}
@ -356,13 +356,13 @@ function getSetting(settings, defaults, property)
{
return settings[property];
}
// Use defaults
if (defaults && (property in defaults))
{
return defaults[property];
}
return undefined;
}
@ -371,7 +371,7 @@ function initCivNameList()
{
// Cache civ data
g_CivData = loadCivData();
// Extract name/code, and skip civs that are explicitly disabled
// (intended for unusable incomplete civs)
var civList = [ { "name": civ.Name, "code": civ.Code }
@ -380,7 +380,7 @@ function initCivNameList()
// Alphabetically sort the list, ignoring case
civList.sort(sortNameIgnoreCase);
var civListNames = [ civ.name for each (civ in civList) ];
var civListCodes = [ civ.code for each (civ in civList) ];
@ -401,41 +401,41 @@ function initMapNameList()
// TODO: Should verify these are valid maps before adding to list
var mapSelectionBox = getGUIObjectByName("mapSelection")
var mapFiles;
switch (g_GameAttributes.mapType)
{
case "scenario":
mapFiles = getXMLFileList(g_GameAttributes.mapPath);
break;
case "random":
mapFiles = getJSONFileList(g_GameAttributes.mapPath);
break;
default:
error("initMapNameList: Unexpected map type '"+g_GameAttributes.mapType+"'");
return;
}
// Apply map filter, if any defined
var mapList = [];
for (var i = 0; i < mapFiles.length; ++i)
{
var file = mapFiles[i];
var mapData = loadMapData(file);
if (g_GameAttributes.mapFilter && mapData && testFilter(g_GameAttributes.mapFilter, mapData.settings))
{
mapList.push({ "name": getMapDisplayName(file), "file": file });
}
}
// Alphabetically sort the list, ignoring case
mapList.sort(sortNameIgnoreCase);
var mapListNames = [ map.name for each (map in mapList) ];
var mapListFiles = [ map.file for each (map in mapList) ];
// Select the default map
var selected = mapListFiles.indexOf(g_GameAttributes.map);
// Default to the first element if list is not empty and we can't find the one we searched for
@ -443,7 +443,7 @@ function initMapNameList()
{
selected = 0;
}
// Update the list control
mapSelectionBox.list = mapListNames;
mapSelectionBox.list_data = mapListFiles;
@ -456,7 +456,7 @@ function loadMapData(name)
{
return undefined;
}
if (!g_MapData[name])
{
switch (g_GameAttributes.mapType)
@ -464,17 +464,17 @@ function loadMapData(name)
case "scenario":
g_MapData[name] = Engine.LoadMapSettings(g_GameAttributes.mapPath+name);
break;
case "random":
g_MapData[name] = parseJSONData(g_GameAttributes.mapPath+name+".json");
break;
default:
error("loadMapData: Unexpected map type '"+g_GameAttributes.mapType+"'");
return undefined;
}
}
return g_MapData[name];
}
@ -522,19 +522,19 @@ function selectNumPlayers(num)
{
return;
}
// Network clients can't change number of players
if (g_IsNetworked && !g_IsController)
{
return;
}
// Only meaningful for random maps
if (g_GameAttributes.mapType != "random")
{
return;
}
// Update player data
var pData = g_GameAttributes.settings.PlayerData;
if (pData && num < pData.length)
@ -550,7 +550,7 @@ function selectNumPlayers(num)
g_GameAttributes.settings.PlayerData.push(g_DefaultPlayerData[i]);
}
}
updateGameAttributes();
}
@ -575,7 +575,7 @@ function selectMapType(type)
// Clear old map data
g_MapData = {};
// Select correct path
switch (g_GameAttributes.mapType)
{
@ -585,7 +585,7 @@ function selectMapType(type)
g_GameAttributes.map = (g_IsNetworked ? DEFAULT_NETWORKED_MAP : DEFAULT_OFFLINE_MAP);
g_GameAttributes.mapPath = "maps/scenarios/";
break;
case "random":
g_GameAttributes.mapPath = "maps/random/";
g_GameAttributes.settings = {
@ -593,7 +593,7 @@ function selectMapType(type)
Seed: Math.floor(Math.random() * 65536)
};
break;
default:
error("selectMapType: Unexpected map type '"+g_GameAttributes.mapType+"'");
return;
@ -617,9 +617,9 @@ function selectMapFilter(filterName)
{
return;
}
g_GameAttributes.mapFilter = filterName;
initMapNameList();
updateGameAttributes();
@ -639,7 +639,7 @@ function selectMap(name)
{
return;
}
// Return if we have no map
if (!name)
{
@ -648,7 +648,7 @@ function selectMap(name)
var mapData = loadMapData(name);
var mapSettings = (mapData && mapData.settings ? deepcopy(mapData.settings) : {});
// Copy any new settings
g_GameAttributes.map = name;
g_GameAttributes.script = mapSettings.Script;
@ -674,7 +674,7 @@ function selectMap(name)
else
{
var numPlayers = (mapSettings.PlayerData ? mapSettings.PlayerData.length : g_GameAttributes.settings.PlayerData.length);
for (var guid in g_PlayerAssignments)
{ // Unassign extra players
var player = g_PlayerAssignments[guid].player;
@ -685,7 +685,7 @@ function selectMap(name)
}
}
}
updateGameAttributes();
}
@ -696,13 +696,13 @@ function launchGame()
error("Only host can start game");
return;
}
// Check that we have a map
if (!g_GameAttributes.map)
{
return;
}
if (g_IsNetworked)
{
Engine.SetNetworkGameAttributes(g_GameAttributes);
@ -726,8 +726,8 @@ function launchGame()
Engine.StartGame(g_GameAttributes, playerID);
Engine.SwitchGuiPage("page_loading.xml", {
"attribs": g_GameAttributes,
"isNetworked" : g_IsNetworked,
"attribs": g_GameAttributes,
"isNetworked" : g_IsNetworked,
"playerAssignments": g_PlayerAssignments
});
}
@ -738,13 +738,13 @@ function launchGame()
function onGameAttributesChange()
{
g_IsInGuiUpdate = true;
// Don't set any attributes here, just show the changes in GUI
var mapName = g_GameAttributes.map || "";
var mapSettings = g_GameAttributes.settings;
var numPlayers = (mapSettings.PlayerData ? mapSettings.PlayerData.length : MAX_PLAYERS);
// Update some controls for clients
if (!g_IsController)
{
@ -756,10 +756,10 @@ function onGameAttributesChange()
mapTypeHeading.caption = "Match Type: "+mapTypeSelection.list[idx];
var mapSelectionBox = getGUIObjectByName("mapSelection");
mapSelectionBox.selected = mapSelectionBox.list_data.indexOf(mapName);
initMapNameList();
}
// Controls common to all map types
var revealMap = getGUIObjectByName("revealMap");
var victoryCondition = getGUIObjectByName("victoryCondition");
@ -773,7 +773,7 @@ function onGameAttributesChange()
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);
// Handle map type specific logic
switch (g_GameAttributes.mapType)
{
@ -786,12 +786,12 @@ function onGameAttributesChange()
revealMap.hidden = false;
victoryCondition.hidden = false;
lockTeams.hidden = false;
mapSizeText.caption = "Map size:";
mapSize.selected = sizeIdx;
revealMapText.caption = "Reveal map:";
revealMap.checked = (mapSettings.RevealMap ? true : false);
victoryConditionText.caption = "Victory condition:";
victoryCondition.selected = victoryIdx;
lockTeamsText.caption = "Teams locked:";
@ -804,9 +804,9 @@ function onGameAttributesChange()
victoryConditionText.caption = "Victory condition: " + VICTORY_TEXT[victoryIdx];
lockTeamsText.caption = "Teams locked: " + (mapSettings.LockTeams === undefined || mapSettings.LockTeams ? "Yes" : "No");
}
break;
case "scenario":
// For scenario just reflect settings for the current map
numPlayersBox.hidden = true;
@ -814,33 +814,33 @@ function onGameAttributesChange()
revealMap.hidden = true;
victoryCondition.hidden = true;
lockTeams.hidden = true;
mapSizeText.caption = "Map size: Default";
revealMapText.caption = "Reveal map: " + (mapSettings.RevealMap ? "Yes" : "No");
victoryConditionText.caption = "Victory condition: " + VICTORY_TEXT[victoryIdx];
lockTeamsText.caption = "Teams locked: " + (mapSettings.LockTeams === undefined || mapSettings.LockTeams ? "Yes" : "No");
break;
default:
error("onGameAttributesChange: Unexpected map type '"+g_GameAttributes.mapType+"'");
return;
}
// Display map name
getGUIObjectByName("mapInfoName").caption = getMapDisplayName(mapName);
// Load the description from the map file, if there is one
var description = mapSettings.Description || "Sorry, no description available.";
// Describe the number of players
var playerString = numPlayers + " " + (numPlayers == 1 ? "player" : "players") + ". ";
for (var i = 0; i < MAX_PLAYERS; ++i)
{
// Show only needed player slots
getGUIObjectByName("playerBox["+i+"]").hidden = (i >= numPlayers);
// Show player data or defaults as necessary
if (i < numPlayers)
{
@ -854,15 +854,15 @@ function onGameAttributesChange()
// Player data / defaults
var pData = mapSettings.PlayerData ? mapSettings.PlayerData[i] : {};
var pDefs = g_DefaultPlayerData ? g_DefaultPlayerData[i] : {};
// Common to all game types
var color = iColorToString(getSetting(pData, pDefs, "Colour"));
pColor.sprite = "colour:"+color+" 100";
pName.caption = getSetting(pData, pDefs, "Name");
var team = getSetting(pData, pDefs, "Team");
var civ = getSetting(pData, pDefs, "Civ");
// For clients or scenarios, hide some player dropdowns
if (!g_IsController || g_GameAttributes.mapType == "scenario")
{
@ -870,7 +870,7 @@ function onGameAttributesChange()
pCiv.hidden = true;
pTeamText.hidden = false;
pTeam.hidden = true;
// Set text values
pCivText.caption = g_CivData[civ].Name;
pTeamText.caption = (team !== undefined && team >= 0) ? team+1 : "-";
@ -881,7 +881,7 @@ function onGameAttributesChange()
pCiv.hidden = false;
pTeamText.hidden = true;
pTeam.hidden = false;
// Set dropdown values
pCiv.selected = (civ ? pCiv.list_data.indexOf(civ) : 0);
pTeam.selected = (team !== undefined && team >= 0) ? team+1 : 0;
@ -890,7 +890,7 @@ function onGameAttributesChange()
}
getGUIObjectByName("mapInfoDescription").caption = playerString + description;
g_IsInGuiUpdate = false;
// Game attributes include AI settings, so update the player list
@ -903,7 +903,7 @@ function updateGameAttributes()
{
Engine.SetNetworkGameAttributes(g_GameAttributes);
}
else
else
{
onGameAttributesChange();
}
@ -918,13 +918,13 @@ function updatePlayerList()
var assignments = [];
var aiAssignments = {};
var noAssignment;
for (var guid in g_PlayerAssignments)
{
var name = g_PlayerAssignments[guid].name;
var hostID = hostNameList.length;
var player = g_PlayerAssignments[guid].player;
hostNameList.push(name);
hostGuidList.push(guid);
assignments[player] = hostID;
@ -940,14 +940,14 @@ function updatePlayerList()
noAssignment = hostNameList.length;
hostNameList.push("[color=\"90 90 90 255\"]Unassigned");
hostGuidList.push("");
for (var i = 0; i < MAX_PLAYERS; ++i)
{
let playerSlot = i;
let playerID = i+1; // we don't show Gaia, so first slot is ID 1
var selection = assignments[playerID];
var configButton = getGUIObjectByName("playerConfig["+i+"]");
configButton.hidden = true;
@ -966,7 +966,7 @@ function updatePlayerList()
{
selection = noAssignment;
}
// Since no human is assigned, show the AI config button
if (g_IsController)
{
@ -1005,7 +1005,7 @@ function updatePlayerList()
}
}
}
var assignBox = getGUIObjectByName("playerAssignment["+i+"]");
assignBox.list = hostNameList;
assignBox.list_data = hostGuidList;
@ -1096,10 +1096,10 @@ function addChatMessage(msg)
{
var username = escapeText(msg.username || g_PlayerAssignments[msg.guid].name);
var message = escapeText(msg.text);
// TODO: Maybe host should have distinct font/color?
var color = "0 0 0";
var color = "white";
if (g_PlayerAssignments[msg.guid] && g_PlayerAssignments[msg.guid].player != 255)
{ // Valid player who has been assigned - get player colour
var player = g_PlayerAssignments[msg.guid].player - 1;
@ -1108,19 +1108,19 @@ function addChatMessage(msg)
var mapSettings = (mapData && mapData.settings ? mapData.settings : {});
var pData = mapSettings.PlayerData ? mapSettings.PlayerData[player] : {};
var pDefs = g_DefaultPlayerData ? g_DefaultPlayerData[player] : {};
color = iColorToString(getSetting(pData, pDefs, "Colour"));
}
var formatted;
switch (msg.type)
{
case "connect":
formatted = '[font="serif-bold-13"][color="'+ color +'"]' + username + '[/color][/font] [color="64 64 64"]has joined[/color]';
formatted = '[font="serif-bold-13"][color="'+ color +'"]' + username + '[/color][/font] [color="gold"]has joined[/color]';
break;
case "disconnect":
formatted = '[font="serif-bold-13"][color="'+ color +'"]' + username + '[/color][/font] [color="64 64 64"]has left[/color]';
formatted = '[font="serif-bold-13"][color="'+ color +'"]' + username + '[/color][/font] [color="gold"]has left[/color]';
break;
case "message":
@ -1148,7 +1148,7 @@ function addFilter(name, filterFunc)
var newFilter = {};
newFilter.name = name;
newFilter.filter = filterFunc;
g_MapFilters.push(newFilter);
}
else
@ -1165,7 +1165,7 @@ function getFilters()
{
filters.push(g_MapFilters[i].name);
}
return filters;
}
@ -1179,7 +1179,7 @@ function testFilter(name, mapSettings)
return g_MapFilters[i].filter(mapSettings);
}
}
error("Invalid map filter: "+name);
return false;
}
@ -1191,7 +1191,7 @@ function keywordTestAND(keywords, matches)
{
return false;
}
for (var m = 0; m < matches.length; ++m)
{ // Fail on not match
if (keywords.indexOf(matches[m]) == -1)
@ -1209,7 +1209,7 @@ function keywordTestOR(keywords, matches)
{
return false;
}
for (var m = 0; m < matches.length; ++m)
{ // Success on match
if (keywords.indexOf(matches[m]) != -1)

View File

@ -11,7 +11,7 @@
<!-- Add a translucent black background to fade out the menu page -->
<object type="image" z="0" sprite="BackgroundBlack"/>
<object type="image" style="StonePanel" size="50%-190 50%-80 50%+190 50%+80" name="loadingWindow">
<object type="image" style="StonePanelLight" size="50%-190 50%-80 50%+190 50%+80" name="loadingWindow">
<object type="text" style="StoneDialogTitleBar" size="50%-128 0%-16 50%+128 16">
Loading
@ -35,12 +35,12 @@
<!-- Map selection -->
<object size="20 64 250 100%-20">
<object size="0 0 40% 100%">
<object name="mapTypeHeading" type="text" style="RightLabelText" size="0 0 100% 28">Match Type:</object>
<object name="mapFilterHeading" type="text" style="RightLabelText" size="0 34 100% 60">Map Filter:</object>
</object>
<object name="mapTypeSelection"
type="dropdown"
style="StoneDropDown"
@ -49,7 +49,7 @@
tooltip="Select a map type.">
<action on="SelectionChange">selectMapType(this.list_data[this.selected]);</action>
</object>
<object name="mapFilterSelection"
type="dropdown"
style="StoneDropDown"
@ -58,7 +58,7 @@
tooltip="Select a map filter.">
<action on="SelectionChange">selectMapFilter(this.list[this.selected]);</action>
</object>
<object name="mapSelection"
style="StoneList"
type="list"
@ -67,12 +67,12 @@
tooltip="Select a map to play on.">
<action on="SelectionChange">selectMap(this.list_data[this.selected]);</action>
</object>
<object type="image" sprite="BackgroundIndentFillDark" size="0 100%-190 100% 100%">
<object name="mapInfoName" type="text" style="LeftLabelText" size="0 0 100% 30"/>
<object name="mapInfoDescription" type="text" style="SmallLeftLabelText" size="0 24 100% 100%"/>
</object>
</object>
<!-- Player assignments -->
@ -124,8 +124,8 @@
</repeat>
</object>
</object>
<!-- Options -->
<object name="gameOptionsBox" size="260 100%-260 100% 100%-190">
<object size="2 2 100% 50%-2"> <!-- Top row -->
@ -141,22 +141,22 @@
<object name="lockTeams" size="400 2 420 100%" type="checkbox" style="StoneCrossBox" hidden="true" tooltip_style="onscreenToolTip" tooltip="Toggle locked teams"/>
</object>
</object>
<!-- Chat window -->
<object name="chatPanel" size="260 100%-190 100%-20 100%-58" type="image" sprite="BackgroundIndentFillDark">
<object name="chatText" size="3 1 100%-1 100%-25" type="text" style="chatPanel"/>
<object name="chatInput" size="2 100%-23 100%-66 100%-3" type="input" style="StoneInput">
<action on="Press">submitChatInput();</action>
</object>
<object size="100%-65 100%-23 100% 100%-3" type="button" style="StoneButton">
Send
<action on="Press">submitChatInput();</action>
</object>
</object>
@ -169,7 +169,7 @@
hidden="true"
size="260 100%-64 100%-310 100%-16"
>[Tooltip text]</object>
<object
name="cancelGame"
type="button"
@ -183,7 +183,7 @@
Engine.PopGuiPage();
]]></action>
</object>
<object
name="startGame"
type="button"
@ -194,7 +194,7 @@
>Start game!
<action on="Press">launchGame();</action>
</object>
</object>
</objects>

View File

@ -2,7 +2,7 @@
<styles>
<style name="indentedPanel"
<!-- <style name="indentedPanel"
buffer_zone="5"
font="serif-14"
sprite="wheatIndentFillLight"
@ -10,16 +10,16 @@
textcolor_selected="white"
text_align="left"
text_valign="center"
/>
/>-->
<style name="chatPanel"
buffer_zone="5"
font="serif-13"
scrollbar="true"
scrollbar_style="wheatScrollBar"
scrollbar_style="StoneScrollBar"
scroll_bottom="true"
textcolor="black"
textcolor_selected="white"
textcolor="white"
textcolor_selected="gold"
text_align="left"
text_valign="center"
/>

View File

@ -11,7 +11,7 @@
==========================================
-->
<object type="image" sprite="bkFillBlack"/>
<object type="image" sprite="BackgroundBlack"/>
<object name="pg">
@ -84,11 +84,11 @@
You can automatically send us anonymous feedback that will help us fix bugs, and improve performance and compatibility.
</object>
<object type="button" style="wheatButton" size="4 100%-36 150 100%-4">
[font="serif-bold-16"]Enable feedback
<object type="button" style="StoneButton" size="8 100%-36 146 100%-8">
Enable feedback
<action on="Press">Engine.SetUserReportEnabled(true);</action>
</object>
<object type="button" style="wheatButton" size="100%-150 100%-36 100%-4 100%-4">
<object type="button" style="StoneButton" size="100%-146 100%-36 100%-8 100%-8">
Technical details
<action on="Press">Engine.PushGuiPage("page_manual.xml", { "page": "userreport" });</action>
</object>
@ -125,27 +125,27 @@ Status: $status.
name="userReportMessageInput"
size="4 130 100%-4 200"
type="input"
style="wheatInput"
style="StoneInput"
multiline="true"
scrollbar="true"
scrollbar_style="wheatScrollBar"
scrollbar_style="StoneScrollBar"
/>
<object size="100%-124 204 100%-4 236" type="button" style="wheatButton">
<object size="100%-124 204 100%-4 232" type="button" style="StoneButton">
Send Message
<action on="Press">submitUserReportMessage();</action>
</object>
<object type="button" style="wheatButton" size="4 100%-36 150 100%-4">
<object type="button" style="StoneButton" size="8 100%-36 146 100%-8">
Disable feedback
<action on="Press">Engine.SetUserReportEnabled(false);</action>
</object>
<object type="button" style="wheatButton" size="100%-150 100%-36 100%-4 100%-4">
<object type="button" style="StoneButton" size="100%-146 100%-36 100%-8 100%-8">
Technical details
<action on="Press">Engine.PushGuiPage("page_manual.xml", { "page": "userreport" });</action>
</object>
</object>
<!--
==========================================
@ -169,14 +169,14 @@ Status: $status.
ghost="true"
size="100%-2 0 100% 100%"
/>
<object name="productLogo"
type="image"
sprite="productLogo"
ghost="true"
size="50%-110 30 50%+110 130"
/>
<object name="mainMenuButtons"
type="image"
size="8 156 100%-8 356"
@ -188,7 +188,7 @@ Status: $status.
size="100% 0 100%+8 100%"
ghost="false"
/>
<!-- LEARN TO PLAY BUTTON -->
<object name="menuLearnToPlayButton"
type="button"
@ -205,7 +205,7 @@ Status: $status.
]]>
</action>
</object>
<!-- SINGLEPLAYER BUTTON -->
<object name="menuSinglePlayerButton"
style="StoneButtonFancy"
@ -221,7 +221,7 @@ Status: $status.
]]>
</action>
</object>
<!-- MULTIPLAYER BUTTON -->
<object name="menuMultiplayerButton"
style="StoneButtonFancy"
@ -237,7 +237,7 @@ Status: $status.
]]>
</action>
</object>
<!-- TOOLS AND OPTIONS BUTTON -->
<object name="menuToolsAndOptionsButton"
style="StoneButtonFancy"
@ -253,7 +253,7 @@ Status: $status.
]]>
</action>
</object>
<!-- HISTORY BUTTON -->
<object name="menuHistoryButton"
style="StoneButtonFancy"
@ -270,7 +270,7 @@ Status: $status.
]]>
</action>
</object>
<!-- EXIT BUTTON -->
<object name="menuExitButton"
type="button"
@ -291,56 +291,56 @@ Status: $status.
</object>
</object>
<!-- PRE-RELEASE INFO -->
<!-- PRE-RELEASE INFO -->
<object size="8 100%-340 100%-8 100%-100"
type="image"
type="image"
style="TranslucentPanelThinBorder"
>
<!-- PRE-RELEASE WARNING -->
<object
style="fancyTextHeadWhite"
type="text"
<!-- PRE-RELEASE WARNING -->
<object
font="serif-14"
type="text"
textcolor="white"
size="8 8 100%-8 100%-36"
ghost="true"
>
>
[font="serif-bold-18"]Alpha Version[/font]
WARNING: This is an early development version of the game. Many features have not been added yet.
WARNING: This is an early development version of the game. Many features have not been added yet.
Get involved at: wildfiregames.com/0ad
Get involved at: wildfiregames.com/0ad
</object>
<!-- CONTACT METHODS -->
<object type="button"
<!-- CONTACT METHODS -->
<object type="button"
style="StoneButton"
tooltip_style="pgToolTip"
tooltip="Click to open wildfiregames.com/0ad in your web browser."
size="8 100%-36 50%-4 100%-8"
>
Website
<action on="Press"><![CDATA[
var url = "http://wildfiregames.com/0ad/";
Engine.OpenURL(url);
messageBox(400, 200, "Opening "+url+" in default web browser. Please wait...", "Opening page", 2);
]]></action>
</object>
>
Website
<action on="Press"><![CDATA[
var url = "http://wildfiregames.com/0ad/";
Engine.OpenURL(url);
messageBox(400, 200, "Opening "+url+" in default web browser. Please wait...", "Opening page", 2);
]]></action>
</object>
<object type="button"
style="StoneButton"
tooltip_style="pgToolTip"
tooltip="Click to chat in IRC. (#0ad at webchat.quakenet.org)"
size="50%+4 100%-36 100%-8 100%-8"
>
IRC
<action on="Press"><![CDATA[
var url = "http://webchat.quakenet.org/?channels=0ad";
Engine.OpenURL(url);
messageBox(400, 200, "Opening "+url+" in default web browser. Please wait...", "Opening page", 2);
]]></action>
</object>
</object>
size="50%+4 100%-36 100%-8 100%-8"
>
IRC
<action on="Press"><![CDATA[
var url = "http://webchat.quakenet.org/?channels=0ad";
Engine.OpenURL(url);
messageBox(400, 200, "Opening "+url+" in default web browser. Please wait...", "Opening page", 2);
]]></action>
</object>
</object>
<!-- LOGO AND BUILD VERSION -->
<object
@ -375,16 +375,16 @@ Get involved at: wildfiregames.com/0ad
this.caption = "Build: " + buildTime(0) + " - " + buildTime(2);
]]></action>
</object>
</object>
<!--
==========================================
- SUBMENU
==========================================
-->
<object name="submenuScreen"
type="image"
hidden="true"
@ -394,7 +394,7 @@ Get involved at: wildfiregames.com/0ad
getGUIObjectByName("submenu").hidden = true;
getGUIObjectByName("MainMenuPanelRightBorderTop").size = "100%-2 0 100% 100%";
</action>
<!-- submenu -->
<object name="submenu"
type="image"
@ -442,7 +442,7 @@ Get involved at: wildfiregames.com/0ad
]]></action>
</object>
</object>
<!-- submenuMultiplayer -->
<object name="submenuMultiplayer"
type="image"
@ -466,7 +466,7 @@ Get involved at: wildfiregames.com/0ad
Engine.PushGuiPage("page_gamesetup_mp.xml", "join");
]]></action>
</object>
<object name="subMenuMultiplayerHostButton"
type="button"
style="StoneButtonFancy"
@ -531,19 +531,19 @@ Get involved at: wildfiregames.com/0ad
</object>
</object><!-- end of submenu -->
</object><!-- end of submenu screen -->
<!--
<object name="pgCampaignsBt"
style="pgButton"
@ -634,7 +634,7 @@ Get involved at: wildfiregames.com/0ad
-->
@ -667,7 +667,7 @@ Get involved at: wildfiregames.com/0ad
// Get credits text.
var creditsArray = readFileLines("gui/text/credits.txt");
// Populate credits list.
// Populate credits list.
for (var creditsIndex = 0; creditsIndex < creditsArray.length; creditsIndex++)
{
// Add credit row to the end of the object's list.
@ -735,7 +735,7 @@ Get involved at: wildfiregames.com/0ad
type="image"
z="90"
hidden="true"
sprite="bkTranslucent"
sprite="bkTranslucent"
>-->
<!--
@ -764,9 +764,9 @@ Get involved at: wildfiregames.com/0ad
closeMainMenuSubWindow ("pgCampaigns");
]]></action>
</object>
-->
-->
<!-- Add campaign screen controls here later -->
<!--
<!--
</object>
-->
<!--
@ -831,7 +831,7 @@ Get involved at: wildfiregames.com/0ad
global.curr_music.setGain (getGUIObjectByName ("pgOptionsAudioMusicGain").caption);
g_ConfigDB.system["sound.mastergain"] = getGUIObjectByName ("pgOptionsAudioMusicGain").caption;
}
]]></action>
]]></action>
</object>
-->
<!--
@ -911,7 +911,7 @@ Get involved at: wildfiregames.com/0ad
global.curr_music.setGain (getGUIObjectByName ("pgOptionsAudioMusicGain").caption);
g_ConfigDB.system["sound.mastergain"] = getGUIObjectByName ("pgOptionsAudioMusicGain").caption;
}
]]></action>
]]></action>
</object>
-->
<!--
@ -987,7 +987,7 @@ Get involved at: wildfiregames.com/0ad
// global.curr_music.setGain (getGUIObjectByName ("pgOptionsAudioMusicGain").caption);
// g_ConfigDB.system["sound.mastergain"] = getGUIObjectByName ("pgOptionsAudioMusicGain").caption;
}
]]></action>
]]></action>
</object>
-->
<!--
@ -1063,7 +1063,7 @@ Get involved at: wildfiregames.com/0ad
// global.curr_music.setGain (getGUIObjectByName ("pgOptionsAudioMusicGain").caption);
// g_ConfigDB.system["sound.mastergain"] = getGUIObjectByName ("pgOptionsAudioMusicGain").caption;
}
]]></action>
]]></action>
</object>
-->
<!--
@ -1138,7 +1138,7 @@ Get involved at: wildfiregames.com/0ad
// global.curr_music.setGain (getGUIObjectByName ("pgOptionsAudioMusicGain").caption);
// g_ConfigDB.system["sound.mastergain"] = getGUIObjectByName ("pgOptionsAudioMusicGain").caption;
}
]]></action>
]]></action>
</object>
</object>
@ -1486,7 +1486,7 @@ Get involved at: wildfiregames.com/0ad
type="button"
size="80% 91% 99% 99%"
tooltip="Display System Information."
tooltip_style="pgFloatingToolTip"
tooltip_style="pgFloatingToolTip"
>System Info
<action on="Press"><![CDATA[
// Display System Information.
@ -1537,7 +1537,7 @@ Get involved at: wildfiregames.com/0ad
]]></action>
<action on="Press"><![CDATA[
// Clicking the checkbox reverses the buttons
]]></action>
]]></action>
</object>
</object>
@ -1583,7 +1583,7 @@ Get involved at: wildfiregames.com/0ad
openOptionsTab ("pgOptionsGame");
]]></action>
</object>
-->
-->
<!--
===============================================
- OPTIONS SCREEN - OK BUTTON
@ -1618,15 +1618,15 @@ Get involved at: wildfiregames.com/0ad
type="button"
size="60% 92% 90% 100%"
tooltip="Close Options Screen, abandoning all changes."
tooltip_style="pgFloatingToolTip"
tooltip_style="pgFloatingToolTip"
>Cancel
<action on="Press"><![CDATA[
// Close Options Screen, abandoning all changes.
// Close Options Screen, abandoning all changes.
closeMainMenuSubWindow ("pgOptions");
]]></action>
</object>
</object>
</object>
-->
<!--
===============================================
@ -1679,5 +1679,5 @@ Get involved at: wildfiregames.com/0ad
<!--END OF pgSubWindow-->
<!-- </object>-->
</objects>

View File

@ -32,15 +32,15 @@
<!-- ================================ ================================ -->
<!-- HOTKEYS (For some reason, they won't work properly unless outside menu) -->
<!-- ================================ ================================ -->
<!-- Exit button Hotkey -->
<!--
<action on="Press"><![CDATA[
messageBox(400, 200, "Do you really want to quit?", "Confirmation", 0,
["Yes", "No!"], [leaveGame, null]);
]]></action>
]]></action>
-->
<object hotkey="leave">
<action on="Press">escapeKeyAction();</action>
</object>
@ -59,7 +59,7 @@
<object hotkey="pause">
<action on="Press">togglePause();</action>
</object>
<!-- Delete button Hotkey (For some reason it won't work when the console is visible -->
<object hotkey="session.kill">
<action on="Press">performCommand(g_Selection.toList()[0], "delete");</action>
@ -69,16 +69,16 @@
<object hotkey="camera.follow">
<action on="Press">setCameraFollow(g_Selection.toList()[0]);</action>
</object>
<!-- Find idle warrior - TODO: Potentially move this to own UI button? -->
<object hotkey="selection.idlewarrior">
<action on="Press">findIdleUnit(["Hero", "Super", "CitizenSoldier", "Siege", "Warship"]);</action>
</object>
<!-- ================================ ================================ -->
<!-- Developer / Debug items -->
<!-- ================================ ================================ -->
<!-- Debug text -->
<object name="debug"
type="text"
@ -96,7 +96,7 @@
</action>
<object size="0 0 100%-18 16" type="text" style="devCommandsText">Control all units</object>
<object size="100%-16 0 100% 16" type="checkbox" name="devControlAll" style="wheatCrossBox">
<object size="100%-16 0 100% 16" type="checkbox" name="devControlAll" style="StoneCrossBox">
<action on="Press">
g_DevSettings.controlAll = this.checked;
Engine.PostNetworkCommand( {"type": "control-all", "flag": this.checked} );
@ -104,45 +104,45 @@
</object>
<object size="0 16 100%-18 32" type="text" style="devCommandsText">Display selection state</object>
<object size="100%-16 16 100% 32" type="checkbox" name="devDisplayState" style="wheatCrossBox"/>
<object size="100%-16 16 100% 32" type="checkbox" name="devDisplayState" style="StoneCrossBox"/>
<object size="0 32 100%-18 48" type="text" style="devCommandsText">Pathfinder overlay</object>
<object size="100%-16 32 100% 48" type="checkbox" style="wheatCrossBox">
<object size="100%-16 32 100% 48" type="checkbox" style="StoneCrossBox">
<action on="Press">Engine.GuiInterfaceCall("SetPathfinderDebugOverlay", this.checked);</action>
</object>
<object size="0 48 100%-18 64" type="text" style="devCommandsText">Obstruction overlay</object>
<object size="100%-16 48 100% 64" type="checkbox" style="wheatCrossBox">
<object size="100%-16 48 100% 64" type="checkbox" style="StoneCrossBox">
<action on="Press">Engine.GuiInterfaceCall("SetObstructionDebugOverlay", this.checked);</action>
</object>
<object size="0 64 100%-18 80" type="text" style="devCommandsText">Unit motion overlay</object>
<object size="100%-16 64 100% 80" type="checkbox" style="wheatCrossBox">
<object size="100%-16 64 100% 80" type="checkbox" style="StoneCrossBox">
<action on="Press">g_Selection.SetMotionDebugOverlay(this.checked);</action>
</object>
<object size="0 80 100%-18 96" type="text" style="devCommandsText">Range overlay</object>
<object size="100%-16 80 100% 96" type="checkbox" style="wheatCrossBox">
<object size="100%-16 80 100% 96" type="checkbox" style="StoneCrossBox">
<action on="Press">Engine.GuiInterfaceCall("SetRangeDebugOverlay", this.checked);</action>
</object>
<object size="0 96 100%-18 112" type="text" style="devCommandsText">Restrict camera</object>
<object size="100%-16 96 100% 112" type="checkbox" style="wheatCrossBox" checked="true">
<object size="100%-16 96 100% 112" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Press">gameView.constrainCamera = this.checked;</action>
</object>
<object size="0 112 100%-18 128" type="text" style="devCommandsText">Reveal map</object>
<object name="devCommandsRevealMap" size="100%-16 112 100% 128" type="checkbox" style="wheatCrossBox">
<object name="devCommandsRevealMap" size="100%-16 112 100% 128" type="checkbox" style="StoneCrossBox">
<action on="Press">Engine.PostNetworkCommand({"type": "reveal-map", "enable": this.checked});</action>
</object>
<object size="0 128 100%-18 144" type="text" style="devCommandsText">Enable time warp</object>
<object size="100%-16 128 100% 144" type="checkbox" name="devTimeWarp" style="wheatCrossBox">
<object size="100%-16 128 100% 144" type="checkbox" name="devTimeWarp" style="StoneCrossBox">
<action on="Press">Engine.EnableTimeWarpRecording(this.checked ? 10 : 0);</action>
</object>
<object size="0 144 100%-18 160" type="text" style="devCommandsText">Promote selected units</object>
<object size="100%-16 144 100% 160" type="button" style="wheatCrossBox">
<object size="100%-16 144 100% 160" type="button" style="StoneCrossBox">
<action on="Press">Engine.PostNetworkCommand({"type": "promote", "entities": g_Selection.toList()});</action>
</object>
</object>
@ -194,7 +194,7 @@
</object>
</object>
<!-- ================================ ================================ -->
<!-- Menu -->
<!-- ================================ ================================ -->
@ -206,7 +206,7 @@
<action on="MouseEnter">
closeMenu();
</action>
<object name="menu"
style="StonePanelThinBorder"
type="image"
@ -214,7 +214,7 @@
hidden="true"
>
<object size="4 36 100%-4 50%+20">
<!-- Settings button -->
<object type="button"
name="settingsButton"
@ -284,45 +284,45 @@
<object name="sessionDialogTitleBar" size="50%-96 -16 50%+96 16" type="image" style="StoneDialogTitleBar">
<object name="sessionDialogTitle" type="text" style="TitleText" size="0 -2 100% 100%">Settings</object>
</object>
<object style="TranslucentPanelThinBorder"
type="image"
size="32 32 100%-32 100%-64"
>
<!-- Settings / shadows -->
<object size="0 10 100%-80 35" type="text" style="RightLabelText" ghost="true">Enable Shadows</object>
<object name="shadowsCheckbox" size="100%-56 15 100%-30 40" type="checkbox" style="wheatCrossBox" checked="true">
<object name="shadowsCheckbox" size="100%-56 15 100%-30 40" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.shadows) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.shadows = this.checked;</action>
</object>
</object>
<!-- Settings / Shadow PCF -->
<object size="0 35 100%-80 60" type="text" style="RightLabelText" ghost="true">Enable Shadow Filtering</object>
<object name="shadowPCFCheckbox" size="100%-56 40 100%-30 65" type="checkbox" style="wheatCrossBox" checked="true">
<object name="shadowPCFCheckbox" size="100%-56 40 100%-30 65" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.shadowPCF) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.shadowPCF = this.checked;</action>
</object>
<!-- Settings / Water -->
<object size="0 60 100%-80 85" type="text" style="RightLabelText" ghost="true">Enable Water Reflections</object>
<object name="fancyWaterCheckbox" size="100%-56 65 100%-30 90" type="checkbox" style="wheatCrossBox" checked="true">
<object name="fancyWaterCheckbox" size="100%-56 65 100%-30 90" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.fancyWater) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.fancyWater = this.checked;</action>
</object>
<!-- Settings / Music-->
<object size="0 85 100%-80 110" type="text" style="RightLabelText" ghost="true">Enable Music</object>
<object size="100%-56 90 100%-30 115" type="checkbox" style="wheatCrossBox" checked="true">
<object size="100%-56 90 100%-30 115" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Press">if (this.checked) startMusic(); else stopMusic();</action>
</object>
<!-- Settings / Dev Overlay -->
<object size="0 110 100%-80 135" type="text" style="RightLabelText" ghost="true">Developer Overlay</object>
<object size="100%-56 115 100%-30 140" type="checkbox" style="wheatCrossBox" checked="false">
<object size="100%-56 115 100%-30 140" type="checkbox" style="StoneCrossBox" checked="false">
<action on="Press">toggleDeveloperOverlay();</action>
</object>
</object>
<!-- Close button -->
<object type="button"
style="StoneButton"
@ -347,7 +347,7 @@
<!-- ================================ ================================ -->
<object
size="10 0 45% 100%"
>
>
<!-- Food -->
<object size="0 0 90 100%" type="image" style="resourceCounter" tooltip="Food" tooltip_style="sessionToolTipBold">
<object size="0 -4 40 36" type="image" style="resourceIcon" cell_id="0"/>
@ -388,16 +388,16 @@
<!-- Phase -->
<!-- ================================ ================================ -->
<!--<object size="50%+50 4 50%+300 100%-2" name="PhaseTitleBar" type="text" font="serif-bold-stroke-14" textcolor="white"> Death Match :: Village Phase</object>-->
<!-- ================================ ================================ -->
<!-- ALPHA LABELS (alpha, build time, revision) -->
<!-- ================================ ================================ -->
<!-- Displays Alpha name and number -->
<object size="70%-128 0 70%+128 100%" name="alphaLabel" type="text" style="CenteredLabelText" text_valign="top" ghost="true">
ALPHA VI : Fortuna
<!-- Displays build date and revision number-->
<object size="50%-128 0 50%+128 100%-2" name="buildTimeLabel" type="text" text_align="center" text_valign="bottom" font="serif-12" textcolor="white" ghost="true">
<action on="Load"><![CDATA[this.caption = buildTime(0) + " (" + buildTime(2) + ")";]]></action>
@ -416,7 +416,7 @@
<object size="50%-32 50%-16 50%+32 50%+16" type="image" sprite="menuButton" name="menuButtonText" ghost="true">MENU</object>
<action on="Press">openMenu();</action>
</object> <!-- END OF MENU BUTTON -->
</object> <!-- END OF TOP PANEL -->
<!-- ================================ ================================ -->
@ -450,7 +450,7 @@
type="image"
sprite="mapPanel"
z="20"
>
>
<object name="minimap"
type="minimap"
size="14 14 100%-14 100%-14"
@ -493,7 +493,7 @@
</repeat>
</object>
</object>
<object name="unitGarrisonPanel"
size="24 12 100% 100%"
>
@ -534,10 +534,10 @@
>
<!-- Unit details for Single Unit -->
<object size="50%-112 0 50%+112 100%" name="detailsAreaSingle">
<!-- Player Name -->
<object size="0 0 100% 40" name="player" type="text" style="largeCenteredOutlinedText" tooltip_style="sessionToolTipBold"/>
<!-- Stats -->
<object size="8 36 50%-48 100%" name="statsArea" type="image">
<!-- Attack icon -->
@ -558,7 +558,7 @@
<object size="100%-20 4 100%-4 20" name="rankIcon" type="image" sprite="" ghost="true"/>
<object type="image" sprite="glassSquareIcon" ghost="true"/>
</object>
<!-- Stats Bars -->
<object size= "50%+48 40 100% 136" type="image" tooltip_style="sessionToolTip">
<!-- Health bar -->
@ -567,21 +567,21 @@
<object type="image" sprite="healthForeground" ghost="true" name="healthBar"/>
<object type="image" sprite="statsBarShader" ghost="true"/>
</object>
<!-- Stamina bar -->
<object size="32 0 44 100%" type="image" name="stamina" tooltip="Stamina" tooltip_style="sessionToolTip">
<object type="image" sprite="staminaBackground" ghost="true"/>
<object type="image" sprite="staminaForeground" ghost="true" name="staminaBar"/>
<object type="image" sprite="statsBarShader" ghost="true"/>
</object>
<!-- Resource bar -->
<object size="18 0 30 100%" type="image" name="resources" tooltip="Resources" tooltip_style="sessionToolTip">
<object type="image" sprite="resourceBackground" ghost="true"/>
<object type="image" sprite="resourceForeground" ghost="true" name="resourceBar"/>
<object type="image" sprite="statsBarShader" ghost="true"/>
</object>
<!-- Experience bar -->
<object size="46 0 58 100%" type="image" name="experience" tooltip="Experience" tooltip_style="sessionToolTip">
<object type="image" sprite="experienceBackground" ghost="true"/>
@ -589,14 +589,14 @@
<object type="image" sprite="statsBarShader" ghost="true"/>
</object>
</object>
<!-- Specific Name -->
<object size="0 142 100% 162" name="specific" type="text" style="largeCenteredOutlinedText" tooltip_style="sessionToolTipBold"/>
</object>
<!-- Unit details for Multiple Units -->
<object size="50%-112 0 50%+112 100%" name="detailsAreaMultiple">
<object name="unitSelectionPanel"
size="20 12 100%-20 100%"
>
@ -610,12 +610,12 @@
</object>
</repeat>
</object>
</object>
</object>
<!-- Total -->
<object size="100%-42 12 100%-8 46" type="image" sprite="groupsIcon">
<object size="0 0 100% 100%" type="text" style="largeCenteredOutlinedText" name="numberOfUnits"/>
</object>
</object>
<!-- Stats Bars -->
<object size= "100%-38 52 100%-18 100%-40" type="image" tooltip_style="sessionToolTip">
@ -625,7 +625,7 @@
<object type="image" sprite="healthForeground" ghost="true" name="healthBarMultiple"/>
<object type="image" sprite="statsBarShader" ghost="true"/>
</object>
<!-- Stamina bar -->
<object size="14 0 26 100%" type="image" name="staminaMultiple" tooltip="Stamina" tooltip_style="sessionToolTipBold">
<object type="image" sprite="staminaBackground" ghost="true"/>
@ -727,9 +727,9 @@
</object> <!-- END OF UNIT COMMANDS -->
</object><!-- END OF BOTTOM PANEL -->
</object> <!-- END OF SN OBJECT -->
<!-- ================================ ================================ -->
<!-- Selection bandbox -->
<!-- ================================ ================================ -->
@ -749,7 +749,7 @@
<object size="0 0 100% 100%" type="text" style="centeredText" name="disconnectedExitButtonText" ghost="true" font="serif-14">Return to Main Menu</object>
<action on="Press">leaveGame()</action>
</object>
</object>
</objects>

View File

@ -1,11 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<sprites>
<sprite name="bgInfoHeading">
<image backcolor="255 255 255 30" size="0 0 100% 100%" />
<sprite name="TabSpacer">
<image backcolor="gold" size="0 0 100% 100%"/>
</sprite>
<sprite name="bgInfoBox">
<image backcolor="50 35 0 100" size="0 0 100% 100%" />
<sprite name="ForegroundTab">
<image backcolor="255 255 255 40" size="0 0 100% 100%"/>
<image backcolor="gold" size="0 0 2 100%"/>
<image backcolor="gold" size="2 0 100%-2 2"/>
<image backcolor="gold" size="100%-2 0 100% 100%"/>
</sprite>
<sprite name="BackgroundTab">
<image backcolor="50 35 0 120" size="0 0 100% 100%"/>
<image backcolor="gold" size="0 0 1 100%"/>
<image backcolor="gold" size="1 0 100%-1 1"/>
<image backcolor="gold" size="100%-1 0 100% 100%"/>
</sprite>
<sprite name="ForegroundBody">
<image backcolor="255 255 255 40" size="0 0 100% 100%"/>
<image backcolor="gold" size="0 0 2 100%"/>
<image backcolor="gold" size="2 100%-2 100%-2 100%"/>
<image backcolor="gold" size="100%-2 0 100% 100%"/>
</sprite>
</sprites>

View File

@ -27,16 +27,25 @@ function selectPanel(panelNumber)
if (i != panelNumber)
{
getGUIObjectByName(panelNames[i]).hidden = true;
getGUIObjectByName(panelButtonNames[i]).sprite = "bgInfoHeading";
getGUIObjectByName(panelButtonNames[i]).sprite = "BackgroundTab";
}
else
{
{
getGUIObjectByName(panelNames[i]).hidden = false;
getGUIObjectByName(panelButtonNames[i]).sprite = "bgInfoBox";
getGUIObjectByName(panelButtonNames[i]).sprite = "ForegroundTab";
adjustTabDividers(getGUIObjectByName(panelButtonNames[i]).size);
}
}
}
function adjustTabDividers(tabSize)
{
var leftSpacer = getGUIObjectByName("tabDividerLeft");
var rightSpacer = getGUIObjectByName("tabDividerRight");
leftSpacer.size = "20 " + leftSpacer.size.top + " " + (tabSize.left + 2) + " " + leftSpacer.size.bottom;
rightSpacer.size = (tabSize.right - 2) + " " + rightSpacer.size.top + " 100%-20 " + rightSpacer.size.bottom;
}
function init(data)
{
var civData = loadCivData();
@ -44,10 +53,11 @@ function init(data)
getGUIObjectByName("timeElapsed").caption = "Time elapsed: " + timeToString(data.timeElapsed);
getGUIObjectByName("summaryText").caption = data.gameResult;
//Space player boxes
// Space player boxes
var boxSpacing = 32;
for (var i = 0; i < panelNames.length; ++i)
{
for (var j = 0; j < MAX_SLOTS; ++j)
{
var box = getGUIObjectByName("playerBox"+i+"["+j+"]");
@ -57,134 +67,134 @@ function init(data)
boxSize.bottom = j * boxSpacing + h;
box.size = boxSize;
}
// TODO set mapPlayers as playerCounters.length
}
// TODO set maxPlayers as playerCounters.length
var maxPlayers = data.playerStates.length - 1;
// align headers
var left = 50;
// Align headers
var left = 50;
var width = 100;
var playerNameHeadingWidth = 200;
getGUIObjectByName("playerName0Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("unitsTrainedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("unitsLostHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("enemyUnitsKilledHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("buildingsConstructedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("buildingsLostHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("enemyBuildingsDestroyedHeading").size = left + " 6 " + (left + width) + " 100%"; left += width;
var left = 50;
getGUIObjectByName("playerName1Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("civCentresBuiltHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("enemyCivCentresDestroyedHeading").size = left + " 6 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("mapExplorationHeading").size = left + " 6 " + (left + width) + " 100%"; left += width;
var left = 50;
getGUIObjectByName("playerName2Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("foodGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("vegetarianRatioHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("woodGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("metalGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("stoneGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("treasuresCollectedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("playerName0Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("unitsTrainedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("unitsLostHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("enemyUnitsKilledHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("buildingsConstructedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("buildingsLostHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("enemyBuildingsDestroyedHeading").size = left + " 6 " + (left + width) + " 100%"; left += width;
left = 50;
getGUIObjectByName("playerName1Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("civCentresBuiltHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("enemyCivCentresDestroyedHeading").size = left + " 6 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("mapExplorationHeading").size = left + " 6 " + (left + width) + " 100%"; left += width;
left = 50;
getGUIObjectByName("playerName2Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("foodGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("vegetarianRatioHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("woodGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("metalGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("stoneGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("treasuresCollectedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
// Show counters
for (var i = 0; i < MAX_SLOTS; ++i)
{
{
if (i < maxPlayers)
{
var playerState = data.playerStates[i+1];
for (var k = 0; k < panelNames.length; ++k)
{
var playerBox = getGUIObjectByName("playerBox"+k+"["+i+"]");
playerBox.hidden = false;
var colourString = "colour: "
+ Math.floor(playerState.colour.r * 255) + " "
+ Math.floor(playerState.colour.g * 255) + " "
playerBox.hidden = false;
var colourString = "colour: "
+ Math.floor(playerState.colour.r * 255) + " "
+ Math.floor(playerState.colour.g * 255) + " "
+ Math.floor(playerState.colour.b * 255);
playerBox.sprite = colourString + " 32";
var playerColourBox = getGUIObjectByName("playerColourBox"+k+"["+i+"]");
playerColourBox.sprite = colourString + " 255";
var playerName = getGUIObjectByName("playerName"+k+"["+i+"]");
playerName.caption = playerState.name;
getGUIObjectByName("civIcon"+k+"["+i+"]").sprite = "stretched:"+civData[playerState.civ].Emblem;
}
var unitsTrained = getGUIObjectByName("unitsTrained["+i+"]");
var unitsLost = getGUIObjectByName("unitsLost["+i+"]");
var enemyUnitsKilled = getGUIObjectByName("enemyUnitsKilled["+i+"]");
var buildingsConstructed = getGUIObjectByName("buildingsConstructed["+i+"]");
var buildingsLost = getGUIObjectByName("buildingsLost["+i+"]");
var enemyBuildingsDestroyed = getGUIObjectByName("enemyBuildingsDestroyed["+i+"]");
var civCentresBuilt = getGUIObjectByName("civCentresBuilt["+i+"]");
var enemyCivCentresDestroyed = getGUIObjectByName("enemyCivCentresDestroyed["+i+"]");
var mapExploration = getGUIObjectByName("mapExploration["+i+"]");
var foodGathered = getGUIObjectByName("foodGathered["+i+"]");
var vegetarianRatio = getGUIObjectByName("vegetarianRatio["+i+"]");
var woodGathered = getGUIObjectByName("woodGathered["+i+"]");
var metalGathered = getGUIObjectByName("metalGathered["+i+"]");
var stoneGathered = getGUIObjectByName("stoneGathered["+i+"]");
var treasuresCollected = getGUIObjectByName("treasuresCollected["+i+"]");
var unitsTrained = getGUIObjectByName("unitsTrained["+i+"]");
var unitsLost = getGUIObjectByName("unitsLost["+i+"]");
var enemyUnitsKilled = getGUIObjectByName("enemyUnitsKilled["+i+"]");
var buildingsConstructed = getGUIObjectByName("buildingsConstructed["+i+"]");
var buildingsLost = getGUIObjectByName("buildingsLost["+i+"]");
var enemyBuildingsDestroyed = getGUIObjectByName("enemyBuildingsDestroyed["+i+"]");
var civCentresBuilt = getGUIObjectByName("civCentresBuilt["+i+"]");
var enemyCivCentresDestroyed = getGUIObjectByName("enemyCivCentresDestroyed["+i+"]");
var mapExploration = getGUIObjectByName("mapExploration["+i+"]");
var foodGathered = getGUIObjectByName("foodGathered["+i+"]");
var vegetarianRatio = getGUIObjectByName("vegetarianRatio["+i+"]");
var woodGathered = getGUIObjectByName("woodGathered["+i+"]");
var metalGathered = getGUIObjectByName("metalGathered["+i+"]");
var stoneGathered = getGUIObjectByName("stoneGathered["+i+"]");
var treasuresCollected = getGUIObjectByName("treasuresCollected["+i+"]");
// align counters
var left = 240;
var width = 100;
unitsTrained.size = left + " 2 " + (left + width) + " 100%"; left += width;
unitsLost.size = left + " 2 " + (left + width) + " 100%"; left += width;
enemyUnitsKilled.size = left + " 2 " + (left + width) + " 100%"; left += width;
buildingsConstructed.size = left + " 2 " + (left + width) + " 100%"; left += width;
buildingsLost.size = left + " 2 " + (left + width) + " 100%"; left += width;
enemyBuildingsDestroyed.size = left + " 2 " + (left + width) + " 100%"; left += width;
var size = getGUIObjectByName("playerBox0["+i+"]").size;
left = 240;
width = 100;
unitsTrained.size = left + " 2 " + (left + width) + " 100%"; left += width;
unitsLost.size = left + " 2 " + (left + width) + " 100%"; left += width;
enemyUnitsKilled.size = left + " 2 " + (left + width) + " 100%"; left += width;
buildingsConstructed.size = left + " 2 " + (left + width) + " 100%"; left += width;
buildingsLost.size = left + " 2 " + (left + width) + " 100%"; left += width;
enemyBuildingsDestroyed.size = left + " 2 " + (left + width) + " 100%"; left += width;
size = getGUIObjectByName("playerBox0["+i+"]").size;
size.right = left + 10;
getGUIObjectByName("playerBox0["+i+"]").size = size;
var left = 240;
civCentresBuilt.size = left + " 2 " + (left + width) + " 100%"; left += width;
enemyCivCentresDestroyed.size = left + " 2 " + (left + width) + " 100%"; left += width;
mapExploration.size = left + " 2 " + (left + width) + " 100%"; left += width;
var size = getGUIObjectByName("playerBox1["+i+"]").size;
left = 240;
civCentresBuilt.size = left + " 2 " + (left + width) + " 100%"; left += width;
enemyCivCentresDestroyed.size = left + " 2 " + (left + width) + " 100%"; left += width;
mapExploration.size = left + " 2 " + (left + width) + " 100%"; left += width;
size = getGUIObjectByName("playerBox1["+i+"]").size;
size.right = left + 10;
getGUIObjectByName("playerBox1["+i+"]").size = size;
var left = 240;
foodGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;
vegetarianRatio.size = left + " 2 " + (left + width) + " 100%"; left += width;
woodGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;
metalGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;
stoneGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;
left = 240;
foodGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;
vegetarianRatio.size = left + " 2 " + (left + width) + " 100%"; left += width;
woodGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;
metalGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;
stoneGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;
treasuresCollected.size = left + " 2 " + (left + width) + " 100%"; left += width;
var size = getGUIObjectByName("playerBox2["+i+"]").size;
size = getGUIObjectByName("playerBox2["+i+"]").size;
size.right = left + 10;
getGUIObjectByName("playerBox2["+i+"]").size = size;
// display counters
unitsTrained.caption = playerState.statistics.unitsTrained;
unitsLost.caption = playerState.statistics.unitsLost;
enemyUnitsKilled.caption = playerState.statistics.enemyUnitsKilled;
buildingsConstructed.caption = playerState.statistics.buildingsConstructed;
buildingsLost.caption = playerState.statistics.buildingsLost;
enemyBuildingsDestroyed.caption = playerState.statistics.enemyBuildingsDestroyed;
civCentresBuilt.caption = playerState.statistics.civCentresBuilt;
enemyCivCentresDestroyed.caption = playerState.statistics.enemyCivCentresDestroyed;
mapExploration.caption = playerState.statistics.percentMapExplored + "%";
foodGathered.caption = playerState.statistics.resourcesGathered.food;
vegetarianRatio.caption = Math.floor(playerState.statistics.resourcesGathered.food > 0 ?
unitsTrained.caption = playerState.statistics.unitsTrained;
unitsLost.caption = playerState.statistics.unitsLost;
enemyUnitsKilled.caption = playerState.statistics.enemyUnitsKilled;
buildingsConstructed.caption = playerState.statistics.buildingsConstructed;
buildingsLost.caption = playerState.statistics.buildingsLost;
enemyBuildingsDestroyed.caption = playerState.statistics.enemyBuildingsDestroyed;
civCentresBuilt.caption = playerState.statistics.civCentresBuilt;
enemyCivCentresDestroyed.caption = playerState.statistics.enemyCivCentresDestroyed;
mapExploration.caption = playerState.statistics.percentMapExplored + "%";
foodGathered.caption = playerState.statistics.resourcesGathered.food;
vegetarianRatio.caption = Math.floor(playerState.statistics.resourcesGathered.food > 0 ?
(playerState.statistics.resourcesGathered.vegetarianFood / playerState.statistics.resourcesGathered.food) * 100 : 0) + "%";
woodGathered.caption = playerState.statistics.resourcesGathered.wood;
metalGathered.caption = playerState.statistics.resourcesGathered.metal;
stoneGathered.caption = playerState.statistics.resourcesGathered.stone;
treasuresCollected.caption = playerState.statistics.treasuresCollected;
woodGathered.caption = playerState.statistics.resourcesGathered.wood;
metalGathered.caption = playerState.statistics.resourcesGathered.metal;
stoneGathered.caption = playerState.statistics.resourcesGathered.stone;
treasuresCollected.caption = playerState.statistics.treasuresCollected;
}
else
{
@ -196,4 +206,6 @@ function init(data)
}
}
}
selectPanel(0);
}

View File

@ -9,7 +9,7 @@
<objects>
<script file="gui/common/functions_civinfo.js"/>
<script file="gui/summary/summary.js"/>
<object type="image" sprite="bkFillBlack">
<object type="image" sprite="BackgroundBlack">
<object type="image"
style="StonePanelLight"
@ -18,9 +18,9 @@
<object style="StoneDialogTitleBar" type="text" size="50%-128 0%-16 50%+128 16">
Summary
</object>
<object type="image" sprite="bgInfoHeading" size="16 16 100%-16 46">
<object
<object type="image" sprite="ForegroundBody" size="20 20 100%-20 50">
<object
name="summaryText"
type="text"
size="50 0 100%-50 30"
@ -28,8 +28,8 @@
textcolor="255 255 255"
text_align="center"
/>
<object
<object
name="timeElapsed"
type="text"
size="100%-200 0 100%-10 30"
@ -38,22 +38,27 @@
text_align="center"
/>
</object>
<object name="unitsBuildingsPanelButton" type="button" sprite="bgInfoBox" size="16 75 166 101">
<object name="tabDividerLeft" type="image" sprite="TabSpacer" size="172 100 174 102"/>
<object name="tabDividerRight" type="image" sprite="TabSpacer" size="328 100 330 102"/>
<object name="unitsBuildingsPanelButton" type="button" sprite="ForegroundTab" size="20 75 170 100">
<action on="Press">selectPanel(0);</action>
<object type="text" style="TitleText" ghost="true">Units/buildings</object>
</object>
<object name="conquestPanelButton" type="button" sprite="bgInfoHeading" size="172 75 322 101">
<object name="conquestPanelButton" type="button" sprite="BackgroundTab" size="176 75 326 100">
<action on="Press">selectPanel(1);</action>
<object type="text" style="TitleText" ghost="true">Conquest</object>
</object>
<object name="resourcesPanelButton" type="button" sprite="bgInfoHeading" size="328 75 476 101">
<object name="resourcesPanelButton" type="button" sprite="BackgroundTab" size="332 75 480 100">
<action on="Press">selectPanel(2);</action>
<object type="text" style="TitleText" ghost="true">Resources</object>
</object>
<object name="unitsBuildingsPanel" type="image" sprite="bgInfoBox" size="16 100 100%-16 100%-16">
<object name="unitsBuildingsPanel" type="image" sprite="ForegroundBody" size="20 100 100%-20 100%-48">
<object size="0 0 100% 100%-50">
<object name="playerName0Heading" type="text" style="LeftTabLabelText">
Player name
@ -76,9 +81,9 @@
<object name="enemyBuildingsDestroyedHeading" type="text" style="CenteredTabLabelText">
Enemy&#10;buildings&#10;destroyed
</object>
</object>
</object>
<object size="0 65 100% 100%-50">
<repeat count="8">
<object type="image" name="playerBox0[n]" size="10 0 10 30" hidden="true">
@ -94,10 +99,10 @@
</object>
</repeat>
</object>
</object>
<object name="conquestPanel" type="image" sprite="bgInfoBox" size="16 100 100%-16 100%-16" hidden="true">
<object name="conquestPanel" type="image" sprite="ForegroundBody" size="20 100 100%-20 100%-48" hidden="true">
<object size="0 0 100% 100%-50">
<object name="playerName1Heading" type="text" style="LeftTabLabelText">
Player name
@ -111,8 +116,8 @@
<object name="mapExplorationHeading" type="text" style="CenteredTabLabelText">
Map&#10;exploration
</object>
</object>
</object>
<object size="0 65 100% 100%-50">
<repeat count="8">
<object type="image" name="playerBox1[n]" size="10 0 10 30" hidden="true">
@ -125,10 +130,10 @@
</object>
</repeat>
</object>
</object>
<object name="resourcesPanel" type="image" sprite="bgInfoBox" size="16 100 100%-16 100%-16" hidden="true">
<object name="resourcesPanel" type="image" sprite="ForegroundBody" size="20 100 100%-20 100%-48" hidden="true">
<object size="0 0 100% 100%-50">
<object name="playerName2Heading" type="text" style="LeftTabLabelText">
Player name
@ -151,8 +156,8 @@
<object name="treasuresCollectedHeading" type="text" style="CenteredTabLabelText">
Treasures&#10;collected
</object>
</object>
</object>
<object size="0 65 100% 100%-50">
<repeat count="8">
<object type="image" name="playerBox2[n]" size="10 0 10 30" hidden="true">
@ -168,9 +173,9 @@
</object>
</repeat>
</object>
</object>
<object type="button" style="StoneButton" size="100%-176 100%-48 100%-20 100%-20">
Main Menu
<action on="Press"><![CDATA[