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,29 @@ */ 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 && 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; } /** @@ -79,6 +91,12 @@ return coloredText(string + "\n", "white"); } +function switchToStrucTreePage() +{ + Engine.PopGuiPage(); + Engine.PushGuiPage("page_structree.xml", { "civ": g_SelectedCiv, "callback": g_Callback }); +} + /** * Updates the GUI after the user selected a civ from dropdown. * @@ -88,6 +106,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 @@ -4,6 +4,7 @@