Index: binaries/data/config/default.cfg =================================================================== --- binaries/data/config/default.cfg +++ binaries/data/config/default.cfg @@ -151,6 +151,7 @@ silhouettes = "Alt+Shift+S" ; Toggle unit silhouettes showsky = "Alt+Z" ; Toggle sky summary = "Ctrl+Tab" ; Toggle in-game summary +options.toggle = "Alt+O" ; Toggle options window ; > CLIPBOARD CONTROLS copy = "Ctrl+C" ; Copy to clipboard Index: binaries/data/mods/public/gui/common/functions_global_object.js =================================================================== --- binaries/data/mods/public/gui/common/functions_global_object.js +++ binaries/data/mods/public/gui/common/functions_global_object.js @@ -4,6 +4,11 @@ var g_MessageBoxBtnFunctions = []; var g_MessageBoxCallbackArgs = []; +/* + * Identifier whether the Options window is shown. + */ +var g_OptionsShown = false; + var g_MessageBoxCallbackFunction = function(btnCode) { if (btnCode !== undefined && g_MessageBoxBtnFunctions[btnCode]) @@ -156,3 +161,14 @@ "mapSettings": Engine.GetInitAttributes().settings }; } + +function showOptions() +{ + if (!g_OptionsShown) + Engine.PushGuiPage("page_options.xml"); +} + +function setOptionsHotkey(func) +{ + Engine.GetGUIObjectByName("hotkey.options.toggle").onpress = func || (() => showOptions()); +} Index: binaries/data/mods/public/gui/common/global.xml =================================================================== --- binaries/data/mods/public/gui/common/global.xml +++ binaries/data/mods/public/gui/common/global.xml @@ -14,6 +14,13 @@ + + + Index: binaries/data/mods/public/gui/lobby/lobby.js =================================================================== --- binaries/data/mods/public/gui/lobby/lobby.js +++ binaries/data/mods/public/gui/lobby/lobby.js @@ -401,6 +401,7 @@ // Get all messages since the login for (let msg of Engine.LobbyGuiPollHistoricMessages()) g_NetMessageTypes[msg.type][msg.level](msg); + setOptionsHotkey(); } function updateLobbyColumns() Index: binaries/data/mods/public/gui/manual/intro.txt =================================================================== --- binaries/data/mods/public/gui/manual/intro.txt +++ binaries/data/mods/public/gui/manual/intro.txt @@ -49,6 +49,7 @@ Shift + F11: Save current profiler data to "logs/profile.txt" F2: Take screenshot (in .png format, location is displayed in the top left of the GUI after the file has been saved, and can also be seen in the console/logs if you miss it there) Shift + F2: Take huge screenshot (6400px*4800px, in .bmp format, location is displayed in the top left of the GUI after the file has been saved, and can also be seen in the console/logs if you miss it there) +Alt + O: Toggle options window. Alt + S: Switch to the next tab. Alt + W: Switch to the previous tab. Index: binaries/data/mods/public/gui/options/options.js =================================================================== --- binaries/data/mods/public/gui/options/options.js +++ binaries/data/mods/public/gui/options/options.js @@ -141,6 +141,8 @@ function init(data, hotloadData) { + g_OptionsShown = true; + g_HasCallback = hotloadData && hotloadData.callback || data && data.callback; g_SelectedCategory = hotloadData ? hotloadData.selectedCategory : 0; @@ -150,6 +152,7 @@ placeTabButtons(); displayOptions(); + setOptionsHotkey(closePage); } function getHotloadData() @@ -386,8 +389,12 @@ 500, 200, translate("You have unsaved changes, do you want to close this window?"), translate("Warning"), - [translate("No"), translate("Yes")], - [null, closePageWithoutConfirmation]); + [translate("No"), translate("Keep temporary and close"), translate("Save and close")], + [null, closePageWithoutConfirmation, () => { + saveChanges(); + closePageWithoutConfirmation(); + }] + ); else closePageWithoutConfirmation(); } @@ -398,4 +405,5 @@ Engine.PopGuiPageCB(); else Engine.PopGuiPage(); + g_OptionsShown = false; } Index: binaries/data/mods/public/gui/page_replaymenu.xml =================================================================== --- binaries/data/mods/public/gui/page_replaymenu.xml +++ binaries/data/mods/public/gui/page_replaymenu.xml @@ -8,6 +8,8 @@ common/sprites.xml common/styles.xml + common/global.xml + replaymenu/sprites.xml replaymenu/replay_menu.xml Index: binaries/data/mods/public/gui/pregame/mainmenu.js =================================================================== --- binaries/data/mods/public/gui/pregame/mainmenu.js +++ binaries/data/mods/public/gui/pregame/mainmenu.js @@ -38,6 +38,7 @@ guiObj.sprite = g_BackgroundLayerset[i].sprite; guiObj.z = i; } + setOptionsHotkey(); } function getHotloadData() Index: binaries/data/mods/public/gui/session/session.js =================================================================== --- binaries/data/mods/public/gui/session/session.js +++ binaries/data/mods/public/gui/session/session.js @@ -300,6 +300,7 @@ g_Selection.selected = hotloadData.selection; initChatWindow(); + setOptionsHotkey(); sendLobbyPlayerlistUpdate(); onSimulationUpdate();