Index: binaries/data/mods/public/gui/campaigns/default_menu/CampaignMenu.js =================================================================== --- binaries/data/mods/public/gui/campaigns/default_menu/CampaignMenu.js +++ binaries/data/mods/public/gui/campaigns/default_menu/CampaignMenu.js @@ -19,9 +19,38 @@ this.levelSelection.onMouseLeftDoubleClickItem = () => this.startScenario(); Engine.GetGUIObjectByName('startButton').onPress = () => this.startScenario(); Engine.GetGUIObjectByName('backToMain').onPress = () => this.goBackToMainMenu(); - Engine.GetGUIObjectByName('savedGamesButton').onPress = () => Engine.PushGuiPage('page_loadgame.xml', { - 'campaignRun': this.run.filename - }); + Engine.GetGUIObjectByName('savedGamesButton').onPress = () => + Engine.PushGuiPage( + 'page_loadgame.xml', + { + 'campaignRun': this.run.filename + }, + (gameId) => + { + if (gameId == null) + return; + + const metadata = Engine.StartSavedGame(gameId); + if (!metadata) + { + error("Could not load saved game: " + gameId); + return; + } + + const pData = metadata.initAttributes.settings. + PlayerData[metadata.playerID]; + + Engine.SwitchGuiPage("page_loading.xml", { + "attribs": metadata.initAttributes, + "playerAssignments": { + "local": { + "name": pData ? pData.Name : singleplayerName(), + "player": metadata.playerID + } + }, + "savedGUIData": metadata.gui + }); + }); this.mapCache = new MapCache(); Index: binaries/data/mods/public/gui/loadgame/SavegameLoader.js =================================================================== --- binaries/data/mods/public/gui/loadgame/SavegameLoader.js +++ binaries/data/mods/public/gui/loadgame/SavegameLoader.js @@ -27,7 +27,7 @@ if (sameEngineVersion && sameMods) { - this.reallyLoadGame(gameId); + Engine.PopGuiPage(gameId); return; } @@ -59,29 +59,6 @@ message, translate("Warning"), [translate("No"), translate("Yes")], - [undefined, () => { this.reallyLoadGame(gameId); }]); - } - - reallyLoadGame(gameId) - { - let metadata = Engine.StartSavedGame(gameId); - if (!metadata) - { - error("Could not load saved game: " + gameId); - return; - } - - let pData = metadata.initAttributes.settings.PlayerData[metadata.playerID]; - - Engine.SwitchGuiPage("page_loading.xml", { - "attribs": metadata.initAttributes, - "playerAssignments": { - "local": { - "name": pData ? pData.Name : singleplayerName(), - "player": metadata.playerID - } - }, - "savedGUIData": metadata.gui - }); + [undefined, () => { Engine.PopGuiPage(gameId); }]); } } Index: binaries/data/mods/public/gui/pregame/MainMenuItems.js =================================================================== --- binaries/data/mods/public/gui/pregame/MainMenuItems.js +++ binaries/data/mods/public/gui/pregame/MainMenuItems.js @@ -102,9 +102,36 @@ { "caption": translate("Load Game"), "tooltip": translate("Load a saved game."), - "onPress": () => { - Engine.PushGuiPage("page_loadgame.xml"); - } + "onPress": () => + Engine.PushGuiPage( + "page_loadgame.xml", + {}, + (gameId) => + { + if (gameId == null) + return; + + const metadata = Engine.StartSavedGame(gameId); + if (!metadata) + { + error("Could not load saved game: " + gameId); + return; + } + + const pData = metadata.initAttributes.settings. + PlayerData[metadata.playerID]; + + Engine.SwitchGuiPage("page_loading.xml", { + "attribs": metadata.initAttributes, + "playerAssignments": { + "local": { + "name": pData ? pData.Name : singleplayerName(), + "player": metadata.playerID + } + }, + "savedGUIData": metadata.gui + }); + }) }, { "caption": translate("Continue Campaign"),