diff options
author | Martin Kiewitz | 2015-04-26 09:08:46 +0200 |
---|---|---|
committer | Martin Kiewitz | 2015-04-26 09:08:46 +0200 |
commit | bfba28c33591afe8ce2f7f42de49935029bb4d62 (patch) | |
tree | f67a70d7d9dc628ef1944baa509903f6caef3905 /engines/sci/engine/savegame.cpp | |
parent | 21b138add24e9b95e70adb267c35268de0f828d1 (diff) | |
download | scummvm-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.cpp | 17 |
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; |