aboutsummaryrefslogtreecommitdiff
path: root/engines/lab/savegame.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2015-12-09 06:17:16 +0100
committerWillem Jan Palenstijn2015-12-23 21:33:58 +0100
commit0af299d3c78d59de20fe5ad41169f755fda297f4 (patch)
tree23f9aa4f5b10cc466f1f27fcd951f62aebb5b9c6 /engines/lab/savegame.cpp
parentc42629674bc58f46a27a91c3c8325f68ed9f222c (diff)
downloadscummvm-rg350-0af299d3c78d59de20fe5ad41169f755fda297f4.tar.gz
scummvm-rg350-0af299d3c78d59de20fe5ad41169f755fda297f4.tar.bz2
scummvm-rg350-0af299d3c78d59de20fe5ad41169f755fda297f4.zip
LAB: Move saveRestoreGame() to saveload.cpp
Diffstat (limited to 'engines/lab/savegame.cpp')
-rw-r--r--engines/lab/savegame.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/engines/lab/savegame.cpp b/engines/lab/savegame.cpp
index 1e2c8afc7b..0f0c772e4d 100644
--- a/engines/lab/savegame.cpp
+++ b/engines/lab/savegame.cpp
@@ -28,6 +28,11 @@
*
*/
+#include "common/translation.h"
+
+#include "gui/message.h"
+#include "gui/saveload.h"
+
#include "graphics/thumbnail.h"
#include "engines/savestate.h"
@@ -35,9 +40,12 @@
#include "lab/dispman.h"
#include "lab/labsets.h"
+#include "lab/music.h"
+#include "lab/processroom.h"
#include "lab/savegame.h"
namespace Lab {
+
#define SAVEGAME_ID MKTAG('L', 'O', 'T', 'S')
#define SAVEGAME_VERSION 1
@@ -216,5 +224,46 @@ bool loadGame(uint16 *Direction, uint16 *Quarters, int slot) {
return true;
}
+bool LabEngine::saveRestoreGame() {
+ bool isOK = false;
+
+ //g_lab->showMainMenu();
+
+ // The original had one screen for saving/loading. We have two.
+ // Ask the user which screen to use.
+ GUI::MessageDialog saveOrLoad(_("Would you like to save or restore a game?"), _("Save"), _("Restore"));
+
+ int choice = saveOrLoad.runModal();
+ if (choice == GUI::kMessageOK) {
+ // Save
+ GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
+ int slot = dialog->runModalWithCurrentTarget();
+ if (slot >= 0) {
+ Common::String desc = dialog->getResultString();
+
+ if (desc.empty()) {
+ // create our own description for the saved game, the user didn't enter it
+ desc = dialog->createDefaultSaveDescription(slot);
+ }
+
+ isOK = saveGame(_direction, _inventory[QUARTERNUM]._many, slot, desc);
+ }
+ } else {
+ // Restore
+ GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
+ int slot = dialog->runModalWithCurrentTarget();
+ if (slot >= 0) {
+ isOK = loadGame(&_direction, &(_inventory[QUARTERNUM]._many), slot);
+ if (isOK)
+ _music->resetMusic();
+ }
+ }
+
+ _alternate = false;
+ _mainDisplay = true;
+ _graphics->screenUpdate();
+
+ return isOK;
+}
} // End of namespace Lab