aboutsummaryrefslogtreecommitdiff
path: root/engines/wage/saveload.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/wage/saveload.cpp')
-rw-r--r--engines/wage/saveload.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/engines/wage/saveload.cpp b/engines/wage/saveload.cpp
index 4889add4f0..78e8d389d3 100644
--- a/engines/wage/saveload.cpp
+++ b/engines/wage/saveload.cpp
@@ -721,6 +721,13 @@ Common::String WageEngine::getSavegameFilename(int16 slotId) const {
return saveLoadSlot;
}
+Common::Error WageEngine::loadGameState(int slot) {
+ if (loadGame(slot) == 0)
+ return Common::kNoError;
+ else
+ return Common::kUnknownError;
+}
+
Common::Error WageEngine::saveGameState(int slot, const Common::String &description) {
Common::String saveLoadSlot = getSavegameFilename(slot);
if (saveGame(saveLoadSlot, description) == 0)
@@ -729,4 +736,35 @@ Common::Error WageEngine::saveGameState(int slot, const Common::String &descript
return Common::kUnknownError;
}
+bool WageEngine::scummVMSaveLoadDialog(bool isSave) {
+ if (!isSave) {
+ // do loading
+ GUI::SaveLoadChooser dialog = GUI::SaveLoadChooser(_("Load game:"), _("Load"), false);
+ int slot = dialog.runModalWithCurrentTarget();
+
+ if (slot < 0)
+ return true;
+
+ return loadGameState(slot).getCode() == Common::kNoError;
+ }
+
+ // do saving
+ GUI::SaveLoadChooser dialog = GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
+ int slot = dialog.runModalWithCurrentTarget();
+ Common::String desc = dialog.getResultString();
+
+ if (desc.empty()) {
+ // create our own description for the saved game, the user didnt enter it
+ desc = dialog.createDefaultSaveDescription(slot);
+ }
+
+ if (desc.size() > 28)
+ desc = Common::String(desc.c_str(), 28);
+
+ if (slot < 0)
+ return true;
+
+ return saveGameState(slot, desc).getCode() == Common::kNoError;
+}
+
} // End of namespace Agi