Index: ps/trunk/binaries/data/mods/public/gui/campaigns/default_menu/CampaignMenu.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/campaigns/default_menu/CampaignMenu.js +++ ps/trunk/binaries/data/mods/public/gui/campaigns/default_menu/CampaignMenu.js @@ -19,15 +19,40 @@ 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.bind(Engine, + 'page_loadgame.xml', { "campaignRun": this.run.filename }, this.loadSavegame.bind(this)); this.mapCache = new MapCache(); this._ready = true; } + loadSavegame(gameId) + { + if (!gameId) + return; + + const metadata = Engine.StartSavedGame(gameId); + if (!metadata) + { + error("Could not load saved game: " + gameId); + 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 + }); + } + goBackToMainMenu() { this.run.save(); Index: ps/trunk/binaries/data/mods/public/gui/loadgame/SavegameLoader.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/loadgame/SavegameLoader.js +++ ps/trunk/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.bind(Engine, gameId)]); } } Index: ps/trunk/binaries/data/mods/public/gui/pregame/MainMenuItems.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/pregame/MainMenuItems.js +++ ps/trunk/binaries/data/mods/public/gui/pregame/MainMenuItems.js @@ -102,9 +102,31 @@ { "caption": translate("Load Game"), "tooltip": translate("Load a saved game."), - "onPress": () => { - Engine.PushGuiPage("page_loadgame.xml"); - } + "onPress": Engine.PushGuiPage.bind(Engine, "page_loadgame.xml", {}, (gameId) => + { + if (!gameId) + return; + + const metadata = Engine.StartSavedGame(gameId); + if (!metadata) + { + error("Could not load saved game: " + gameId); + 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 + }); + }) }, { "caption": translate("Continue Campaign"),