From c1a50c70129a00bb85b86c19a9779d3f2a2c7fd2 Mon Sep 17 00:00:00 2001 From: phosit Date: Wed, 23 Apr 2025 14:10:23 +0200 Subject: [PATCH] Remove Engine.SwitchGuiPage from main menu --- .../mods/public/gui/pregame/MainMenuItems.js | 143 +++++++++++------- 1 file changed, 86 insertions(+), 57 deletions(-) diff --git a/binaries/data/mods/public/gui/pregame/MainMenuItems.js b/binaries/data/mods/public/gui/pregame/MainMenuItems.js index bbe990427f..7d66c1523b 100644 --- a/binaries/data/mods/public/gui/pregame/MainMenuItems.js +++ b/binaries/data/mods/public/gui/pregame/MainMenuItems.js @@ -14,24 +14,29 @@ export const mainMenuItems = [ { "caption": translate("Tutorial"), "tooltip": translate("Start the introductory tutorial."), - "onPress": () => + "onPress": closePageCallback => { - Engine.SwitchGuiPage("page_autostart.xml", { - "attribs": { - "mapType": "scenario", - "map": "maps/tutorials/introductory_tutorial", - "settings": { - "CheatsEnabled": true + closePageCallback({ [Engine.openRequest]: { + "page": "page_autostart.xml", + "argument": { + "attribs": { + "mapType": "scenario", + "map": "maps/tutorials/introductory_tutorial", + "settings": { + "CheatsEnabled": true + }, }, - }, - "playerAssignments": { - "local": { - "player": 1, - "name": Engine.ConfigDB_GetValue("user", "playername.singleplayer") || Engine.GetSystemUsername() - } - }, - "storeReplay": true - }); + "playerAssignments": { + "local": { + "player": 1, + "name": Engine.ConfigDB_GetValue("user", + "playername.singleplayer") || + Engine.GetSystemUsername() + } + }, + "storeReplay": true + } + } }); } }, { @@ -80,11 +85,13 @@ export const mainMenuItems = [ { "caption": translate("Continue Campaign"), "tooltip": translate("Relive history through historical military campaigns."), - "onPress": () => + "onPress": closePageCallback => { try { - Engine.SwitchGuiPage(CampaignRun.getCurrentRun().getMenuPath()); + closePageCallback({ [Engine.openRequest]: { + "page": CampaignRun.getCurrentRun().getMenuPath() + } }); } catch(err) { @@ -101,15 +108,17 @@ export const mainMenuItems = [ { "caption": translate("Matches"), "tooltip": translate("Start a new single-player game."), - "onPress": () => + "onPress": closePageCallback => { - Engine.SwitchGuiPage("page_gamesetup.xml"); + closePageCallback({ [Engine.openRequest]: { + "page": "page_gamesetup.xml" + } }); } }, { "caption": translate("Load Game"), "tooltip": translate("Load a saved game."), - "onPress": async() => + "onPress": async(closePageCallback) => { const gameId = await Engine.OpenChildPage("page_loadgame.xml"); @@ -123,28 +132,33 @@ export const mainMenuItems = [ return; } - Engine.SwitchGuiPage("page_loading.xml", { - "attribs": metadata.initAttributes, - "playerAssignments": { - "local": { - "name": metadata.initAttributes.settings. - PlayerData[metadata.playerID]?.Name ?? - singleplayerName(), - "player": metadata.playerID - } - }, - "savedGUIData": metadata.gui - }); + closePageCallback({ [Engine.openRequest]: { + "page": "page_loading.xml", + "argument": { + "attribs": metadata.initAttributes, + "playerAssignments": { + "local": { + "name": metadata.initAttributes.settings. + PlayerData[metadata.playerID]?.Name ?? + singleplayerName(), + "player": metadata.playerID + } + }, + "savedGUIData": metadata.gui + } + } }); } }, { "caption": translate("Continue Campaign"), "tooltip": translate("Relive history through historical military campaigns."), - "onPress": () => + "onPress": closePageCallback => { try { - Engine.SwitchGuiPage(CampaignRun.getCurrentRun().getMenuPath()); + closePageCallback({ [Engine.openRequest]: { + "page": CampaignRun.getCurrentRun().getMenuPath() + } }); } catch(err) { @@ -157,34 +171,42 @@ export const mainMenuItems = [ { "caption": translate("New Campaign"), "tooltip": translate("Relive history through historical military campaigns."), - "onPress": () => + "onPress": closePageCallback => { - Engine.SwitchGuiPage("campaigns/setup/page.xml"); + closePageCallback({ [Engine.openRequest]: { + "page": "campaigns/setup/page.xml" + } }); } }, { "caption": translate("Load Campaign"), "tooltip": translate("Relive history through historical military campaigns."), - "onPress": () => + "onPress": closePageCallback => { - // Switch instead of push, otherwise the 'continue' - // button might remain enabled. + // Replace the main menu page instead of opening a child page, otherwise the + // "Continue Campaign" button could wrongly remain enabled when it's closed + // again. // TODO: find a better solution. - Engine.SwitchGuiPage("campaigns/load_modal/page.xml"); + closePageCallback({ [Engine.openRequest]: { + "page": "campaigns/load_modal/page.xml" + } }); } }, { "caption": translate("Replays"), "tooltip": translate("Playback previous games."), - "onPress": () => + "onPress": closePageCallback => { - Engine.SwitchGuiPage("page_replaymenu.xml", { - "replaySelectionData": { - "filters": { - "singleplayer": "Single-player" + closePageCallback({ [Engine.openRequest]: { + "page": "page_replaymenu.xml", + "argument": { + "replaySelectionData": { + "filters": { + "singleplayer": "Single-player" + } } } - }); + } }); } } ] @@ -233,15 +255,18 @@ export const mainMenuItems = [ { "caption": translate("Replays"), "tooltip": translate("Playback previous games."), - "onPress": () => + "onPress": closePageCallback => { - Engine.SwitchGuiPage("page_replaymenu.xml", { - "replaySelectionData": { - "filters": { - "singleplayer": "Multiplayer" + closePageCallback({ [Engine.openRequest]: { + "page": "page_replaymenu.xml", + "argument": { + "replaySelectionData": { + "filters": { + "singleplayer": "Multiplayer" + } } } - }); + } }); } } ] @@ -277,17 +302,21 @@ export const mainMenuItems = [ { "caption": translate("Mod Selection"), "tooltip": translate("Select and download mods for the game."), - "onPress": () => + "onPress": closePageCallback => { - Engine.SwitchGuiPage("page_modmod.xml"); + closePageCallback({ [Engine.openRequest]: { + "page": "page_modmod.xml" + } }); } }, { "caption": translate("Welcome Screen"), "tooltip": translate("Show the Welcome Screen again. Useful if you hid it by mistake."), - "onPress": () => + "onPress": closePageCallback => { - Engine.OpenChildPage("page_splashscreen.xml"); + closePageCallback({ [Engine.openRequest]: { + "page": "page_splashscreen.xml" + } }); } } ]