1
0
forked from mirrors/0ad

Add structure tree to the game session. Based on patch by Louhike. Fixes #3101

This was SVN commit r16610.
This commit is contained in:
sanderd17
2015-05-02 12:22:25 +00:00
parent a9afa61a7b
commit 18a97cc82a
8 changed files with 74 additions and 13 deletions
@@ -741,4 +741,17 @@
/>
</sprite>
<!--
==========================================
CIV ICON
==========================================
-->
<sprite name="CivIconOver">
<image
texture="session/portraits/emblems/states/hover.png"
size="0 0 100% 100%"
/>
</sprite>
</sprites>
@@ -304,4 +304,14 @@
tooltip_style="pgToolTip"
/>
<!--
==========================================
CIV ICON
==========================================
-->
<style name="CivIconOverlay"
sprite=""
sprite_over="CivIconOver"
sound_pressed="audio/interface/ui/ui_button_click.ogg"
/>
</styles>
@@ -175,7 +175,7 @@
<action on="Press">
closeMenu();
<![CDATA[
Engine.PushGuiPage("page_structree.xml");
Engine.PushGuiPage("page_structree.xml", {});
]]>
</action>
</object>
@@ -616,6 +616,18 @@ function toggleGameSpeed()
gameSpeed.hidden = !gameSpeed.hidden;
}
function openStrucTree()
{
closeMenu();
closeOpenDialogs();
pauseGame();
var data = { // TODO add info about researched techs and unlocked entities
"civ" : g_Players[Engine.GetPlayerID()].civ,
"callback": "resumeGame",
};
Engine.PushGuiPage("page_structree.xml", data);
}
/**
* Pause the game in single player mode.
*/
@@ -186,9 +186,10 @@ function init(initData, hotloadData)
}
else
{
var civName = g_CivData[g_Players[Engine.GetPlayerID()].civ].Name;
// TODO: Get a civ icon for gaia/observers.
Engine.GetGUIObjectByName("civIcon").sprite = "stretched:" + g_CivData[g_Players[Engine.GetPlayerID()].civ].Emblem;
Engine.GetGUIObjectByName("civIcon").tooltip = g_CivData[g_Players[Engine.GetPlayerID()].civ].Name;
Engine.GetGUIObjectByName("civIconOverlay").tooltip = sprintf(translate("%(civ)s - Structure Tree"), {"civ": civName});
}
g_GameSpeeds = initGameSpeeds();
@@ -249,8 +250,9 @@ function selectViewPlayer(playerID)
Engine.SetPlayerID(playerID);
if (playerID > 0)
{
var civName = g_CivData[g_Players[playerID].civ].Name
Engine.GetGUIObjectByName("civIcon").sprite = "stretched:" + g_CivData[g_Players[playerID].civ].Emblem;
Engine.GetGUIObjectByName("civIcon").tooltip = g_CivData[g_Players[playerID].civ].Name;
Engine.GetGUIObjectByName("civIconOverlay").tooltip = sprintf(translate("%(civ)s - Structure Tree"), {"civ": civName});
}
}
@@ -1,2 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<object size="50%-48 -26 50%+48 70" name="civIcon" type="image" tooltip_style="sessionToolTipBold"/>
<object type="button"
size="50%-48 -26 50%+48 70"
name="civIcon"
tooltip_style="sessionToolTipBold"
>
<object name="civIconOverlay" style="CivIconOverlay" size="0 0 100% 100%" type="button">
<action on="Press">openStrucTree()</action>
</object>
</object>
@@ -7,12 +7,12 @@ var g_ParsedData = {
var g_Lists = {};
var g_CivData = {};
var g_SelectedCiv = "";
var g_CallbackSet = false;
/**
* Initialize the dropdown containing all the available civs
*/
function init()
function init(data)
{
g_CivData = loadCivData(true);
@@ -24,14 +24,21 @@ function init()
// 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) ];
// Set civ control
var civSelection = Engine.GetGUIObjectByName("civSelection");
civSelection.list = civListNames;
civSelection.list_data = civListCodes;
civSelection.selected = 0;
civSelection.list = civList.map(c => c.name);
civSelection.list_data = civList.map(c => c.code);
if(data.civ)
{
civSelection.selected = civSelection.list_data.indexOf(data.civ);
selectCiv(data.civ);
}
else
civSelection.selected = 0;
if (data.callback)
g_CallbackSet = true;
}
function selectCiv(civCode)
@@ -248,3 +255,11 @@ function selectCiv(civCode)
// Draw tree
draw();
}
function closeStrucTree()
{
if (g_CallbackSet)
Engine.PopGuiPageCB(0);
else
Engine.PopGuiPage();
}
@@ -87,7 +87,7 @@
size="100%-164 100%-44 100%-16 100%-16"
>
<translatableAttribute id="caption">Close</translatableAttribute>
<action on="Press">Engine.PopGuiPage();</action>
<action on="Press">closeStrucTree();</action>
</object>
</object>