Index: binaries/data/config/default.cfg =================================================================== --- binaries/data/config/default.cfg +++ binaries/data/config/default.cfg @@ -154,6 +154,8 @@ ; > DIALOG HOTKEYS summary = "Ctrl+Tab" ; Toggle in-game summary lobby = "Alt+L" ; Show the multiplayer lobby in a dialog window. +structree = "Alt+Shift+S" ; Show structure tree +civinfo = "Alt+Shift+H" ; Show civilization info ; > CLIPBOARD CONTROLS copy = "Ctrl+C" ; Copy to clipboard 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,25 @@ */ const g_CivData = loadCivData(true, false); +/* + * Callback function on closing gui via Engine.PopGuiPage(). + */ +var g_Callback = ""; + /** * Initialize the dropdown containing all the available civs. */ -function init(settings) +function init(data = {}) { + if (data.callback) + 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; + civSelection.selected = data.civ ? civSelection.list_data.indexOf(data.civ) : 0; } /** @@ -79,6 +87,20 @@ return coloredText(string + "\n", "white"); } +function switchToStrucTreePage() +{ + Engine.PopGuiPage(); + Engine.PushGuiPage("page_structree.xml", { "civ": g_SelectedCiv, "callback": g_Callback }); +} + +function close() +{ + if (g_Callback) + Engine.PopGuiPageCB({ "civ": g_SelectedCiv, "page": "page_civinfo.xml" }); + else + Engine.PopGuiPage(); +} + /** * Updates the GUI after the user selected a civ from dropdown. * @@ -88,7 +110,9 @@ { var civInfo = g_CivData[code]; - if(!civInfo) + g_SelectedCiv = code; + + if (!civInfo) error(sprintf("Error loading civ data for \"%(code)s\"", { "code": code })); // Update civ gameplay display 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,18 @@