Index: binaries/data/mods/public/gui/civinfo/civinfo.js
===================================================================
--- binaries/data/mods/public/gui/civinfo/civinfo.js
+++ binaries/data/mods/public/gui/civinfo/civinfo.js
@@ -3,17 +3,26 @@
*/
const g_CivData = loadCivData(true, false);
+var g_Callback = "";
+
/**
* Initialize the dropdown containing all the available civs.
*/
-function init(settings)
+function init(data)
{
+ if (data !== undefined && data.callback)
+ {
+ g_CallbackSet = true;
+ g_Callback = data.callback;
+ }
+
var civList = Object.keys(g_CivData).map(civ => ({ "name": g_CivData[civ].Name, "code": civ })).sort(sortNameIgnoreCase);
var civSelection = Engine.GetGUIObjectByName("civSelection");
civSelection.list = civList.map(civ => civ.name);
civSelection.list_data = civList.map(civ => civ.code);
- civSelection.selected = 0;
+ g_SelectedCiv = data !== undefined && data.civ ? data.civ : "";
+ civSelection.selected = g_SelectedCiv ? civSelection.list_data.indexOf(g_SelectedCiv) : 0;
}
/**
@@ -80,6 +89,12 @@
return string;
}
+function switchStructureTree()
+{
+ Engine.PopGuiPage();
+ Engine.PushGuiPage("page_structree.xml", { "civ": g_SelectedCiv, "callback": g_Callback });
+}
+
/**
* Updates the GUI after the user selected a civ from dropdown.
*
@@ -89,6 +104,8 @@
{
var civInfo = g_CivData[code];
+ g_SelectedCiv = code;
+
if(!civInfo)
error(sprintf("Error loading civ data for \"%(code)s\"", { "code": code }));
Index: binaries/data/mods/public/gui/civinfo/civinfo.xml
===================================================================
--- binaries/data/mods/public/gui/civinfo/civinfo.xml
+++ binaries/data/mods/public/gui/civinfo/civinfo.xml
@@ -5,6 +5,7 @@
+
@@ -113,17 +114,26 @@
+
+
Index: binaries/data/mods/public/gui/gamesetup/gamesetup.js
===================================================================
--- binaries/data/mods/public/gui/gamesetup/gamesetup.js
+++ binaries/data/mods/public/gui/gamesetup/gamesetup.js
@@ -17,6 +17,16 @@
const g_CivData = loadCivData(false, false);
/**
+ * Remember civilization opened in civilization info.
+ */
+var g_CivInfo = "";
+
+/**
+ * Remember last civilization page opened history or structure tree.
+ */
+var g_CivPage = "";
+
+/**
* Highlight the "random" dropdownlist item.
*/
var g_ColorRandom = "orange";
@@ -2427,3 +2437,9 @@
g_Autocomplete = Object.keys(autocomplete).sort().reverse().reduce((all, priority) => all.concat(autocomplete[priority]), []);
}
+
+function rememberCiv(data)
+{
+ g_CivInfo = data !== undefined && data.civ ? data.civ : "";
+ g_CivPage = data !== undefined && data.page ? data.page : "";
+}
Index: binaries/data/mods/public/gui/gamesetup/gamesetup.xml
===================================================================
--- binaries/data/mods/public/gui/gamesetup/gamesetup.xml
+++ binaries/data/mods/public/gui/gamesetup/gamesetup.xml
@@ -68,7 +68,7 @@
>
View civilization info
Index: binaries/data/mods/public/gui/reference/common/core.js
===================================================================
--- binaries/data/mods/public/gui/reference/common/core.js
+++ binaries/data/mods/public/gui/reference/common/core.js
@@ -1,10 +1,10 @@
var g_SelectedCiv = "";
var g_CallbackSet = false;
-function closePage()
+function closePage(cb = 0)
{
if (g_CallbackSet)
- Engine.PopGuiPageCB(0);
+ Engine.PopGuiPageCB(cb);
else
Engine.PopGuiPage();
}
Index: binaries/data/mods/public/gui/reference/structree/structree.js
===================================================================
--- binaries/data/mods/public/gui/reference/structree/structree.js
+++ binaries/data/mods/public/gui/reference/structree/structree.js
@@ -8,6 +8,8 @@
*/
var g_TrainList = {};
+var g_Callback = "";
+
/**
* Initialize the page
*
@@ -16,7 +18,10 @@
function init(data = {})
{
if (data.callback)
+ {
g_CallbackSet = true;
+ g_Callback = data.callback;
+ }
let civList = Object.keys(g_CivData).map(civ => ({
"name": g_CivData[civ].Name,
@@ -42,6 +47,12 @@
civSelection.selected = data.civ ? civSelection.list_data.indexOf(data.civ) : 0;
}
+function switchHistoryPage()
+{
+ Engine.PopGuiPage();
+ Engine.PushGuiPage("page_civinfo.xml", { "civ": g_SelectedCiv, "callback": g_Callback });
+}
+
/**
* @param {string} civCode
*/
Index: binaries/data/mods/public/gui/reference/structree/structree.xml
===================================================================
--- binaries/data/mods/public/gui/reference/structree/structree.xml
+++ binaries/data/mods/public/gui/reference/structree/structree.xml
@@ -112,15 +112,24 @@
-
+
+
+
Index: binaries/data/mods/public/gui/session/menu.js
===================================================================
--- binaries/data/mods/public/gui/session/menu.js
+++ binaries/data/mods/public/gui/session/menu.js
@@ -25,6 +25,11 @@
// Shown in the trade dialog.
var g_IdleTraderTextColor = "orange";
+/*
+ * Remember opened structure tree or history page.
+ */
+var g_CivPage = "";
+
/**
* The barter constants should match with the simulation
* Quantity of goods to sell per click.
@@ -1077,11 +1082,13 @@
closeOpenDialogs();
pauseGame();
- // TODO add info about researched techs and unlocked entities
- Engine.PushGuiPage("page_structree.xml", {
- "civ" : g_Players[g_ViewedPlayer].civ,
- "callback": "resumeGame",
- });
+ Engine.PushGuiPage(g_CivPage ? g_CivPage : "page_structree.xml", { "civ": g_Players[g_ViewedPlayer].civ, "callback": "rememberCiv" });
+}
+
+function rememberCiv(data)
+{
+ g_CivPage = data !== undefined && data.page ? data.page : "";
+ resumeGame();
}
/**