Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/loadgame/SavegameWriter.js
- This file was added.
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
/** | |||||
* This class obtains the current simulation state that will be saved along the savegame. | |||||
*/ | |||||
class SavegameWriter | |||||
{ | |||||
constructor(data) | |||||
{ | |||||
this.savedGameData = data && data.savedGameData || {}; | |||||
let simulationState = Engine.GuiInterfaceCall("GetSimulationState"); | |||||
this.savedGameData.timeElapsed = simulationState.timeElapsed; | |||||
this.savedGameData.states = simulationState.players.map(pState => pState.state); | |||||
} | |||||
getSavedGameData() | |||||
{ | |||||
return this.savedGameData; | |||||
} | |||||
saveGame() | |||||
{ | |||||
let gameSelection = Engine.GetGUIObjectByName("gameSelection"); | |||||
let gameLabel = gameSelection.list[gameSelection.selected]; | |||||
let gameID = gameSelection.list_data[gameSelection.selected]; | |||||
let desc = Engine.GetGUIObjectByName("saveGameDesc").caption; | |||||
let name = gameID || "savegame"; | |||||
if (!gameID) | |||||
{ | |||||
this.reallySaveGame(name, desc, true); | |||||
return; | |||||
} | |||||
messageBox( | |||||
500, 200, | |||||
sprintf(translate("\"%(label)s\""), { "label": gameLabel }) + "\n" + | |||||
translate("Saved game will be permanently overwritten, are you sure?"), | |||||
translate("OVERWRITE SAVE"), | |||||
[translate("No"), translate("Yes")], | |||||
[null, () => { this.reallySaveGame(name, desc, false); }]); | |||||
} | |||||
reallySaveGame(name, desc, nameIsPrefix) | |||||
{ | |||||
if (nameIsPrefix) | |||||
Engine.SaveGamePrefix(name, desc, this.savedGameData); | |||||
else | |||||
Engine.SaveGame(name, desc, this.savedGameData); | |||||
Engine.PopGuiPage(); | |||||
} | |||||
} | |||||
/** | |||||
* HACK: Engine.SaveGame* expects this function to be defined on the current page. | |||||
* That's why we have to pass the data to this page even if we don't need it. | |||||
*/ | |||||
function getSavedGameData() | |||||
{ | |||||
return g_SavegameWriter.getSavedGameData(); | |||||
} |
Wildfire Games · Phabricator