1
0
forked from 0ad/0ad

Move the game loading out of the SavegameLoader

Accepted By: elexis
Differential Revision: https://code.wildfiregames.com/D5130
This was SVN commit r27867.
This commit is contained in:
phosit 2023-10-02 19:31:06 +00:00
parent 13c169025c
commit 3ea20662f7
3 changed files with 55 additions and 31 deletions

View File

@ -19,15 +19,40 @@ class CampaignMenu extends AutoWatcher
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();

View File

@ -27,7 +27,7 @@ class SavegameLoader
if (sameEngineVersion && sameMods)
{
this.reallyLoadGame(gameId);
Engine.PopGuiPage(gameId);
return;
}
@ -59,29 +59,6 @@ class SavegameLoader
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)]);
}
}

View File

@ -102,9 +102,31 @@ var g_MainMenuItems = [
{
"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"),