aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/savegame.cpp
diff options
context:
space:
mode:
authorMartin Kiewitz2015-04-26 09:08:46 +0200
committerMartin Kiewitz2015-04-26 09:08:46 +0200
commitbfba28c33591afe8ce2f7f42de49935029bb4d62 (patch)
treef67a70d7d9dc628ef1944baa509903f6caef3905 /engines/sci/engine/savegame.cpp
parent21b138add24e9b95e70adb267c35268de0f828d1 (diff)
downloadscummvm-rg350-bfba28c33591afe8ce2f7f42de49935029bb4d62.tar.gz
scummvm-rg350-bfba28c33591afe8ce2f7f42de49935029bb4d62.tar.bz2
scummvm-rg350-bfba28c33591afe8ce2f7f42de49935029bb4d62.zip
SCI: implement delayed restore via ScummVM menu
will delay restoring a saved game until the next kGetEvent or kWait also implement aborting playback for kPortrait and kShowMovie
Diffstat (limited to 'engines/sci/engine/savegame.cpp')
-rw-r--r--engines/sci/engine/savegame.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index d146cba204..d89170ab22 100644
--- a/engines/sci/engine/savegame.cpp
+++ b/engines/sci/engine/savegame.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/savefile.h"
#include "common/stream.h"
#include "common/system.h"
#include "common/func.h"
@@ -872,6 +873,22 @@ bool gamestate_save(EngineState *s, Common::WriteStream *fh, const Common::Strin
extern void showScummVMDialog(const Common::String &message);
+void gamestate_delayedrestore(EngineState *s) {
+ Common::String fileName = g_sci->getSavegameName(s->_delayedRestoreGameId);
+ Common::SeekableReadStream *in = g_sci->getSaveFileManager()->openForLoading(fileName);
+
+ if (in) {
+ // found a savegame file
+ gamestate_restore(s, in);
+ delete in;
+ if (s->r_acc != make_reg(0, 1)) {
+ return;
+ }
+ }
+
+ error("Restoring gamestate '%s' failed", fileName.c_str());
+}
+
void gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
SavegameMetadata meta;