diff options
author | Thierry Crozat | 2016-04-11 00:09:35 +0100 |
---|---|---|
committer | Thierry Crozat | 2016-04-11 01:36:54 +0100 |
commit | 1c0362d22f2d16fa87ff4789001e6a4f549eb3ec (patch) | |
tree | 430ac763fc89922f9ca0b5270e2e21ecb1251c5f | |
parent | 50e735d68b0e42eae6648d1852c8a57a4ca22cac (diff) | |
download | scummvm-rg350-1c0362d22f2d16fa87ff4789001e6a4f549eb3ec.tar.gz scummvm-rg350-1c0362d22f2d16fa87ff4789001e6a4f549eb3ec.tar.bz2 scummvm-rg350-1c0362d22f2d16fa87ff4789001e6a4f549eb3ec.zip |
DRASCULA: Improve loading savegames in Pendulum scene
The previous fix only fixed the incomplete state when loading from
the launcher. Now this is fixed when loading from the game as well.
It also fixes loading a savegame from the first stage of the pendulum
scene (when the protagonist is not visible) to any other scene in
chapter 6. The protagonist was not made visible again when loading
the savegame.
-rw-r--r-- | engines/drascula/drascula.cpp | 4 | ||||
-rw-r--r-- | engines/drascula/saveload.cpp | 18 |
2 files changed, 18 insertions, 4 deletions
diff --git a/engines/drascula/drascula.cpp b/engines/drascula/drascula.cpp index 358aecc295..9ac9031fb7 100644 --- a/engines/drascula/drascula.cpp +++ b/engines/drascula/drascula.cpp @@ -534,10 +534,6 @@ bool DrasculaEngine::runCurrentChapter() { if (!loadGame(_currentSaveSlot)) { return true; } - // When loading room 102 while being attached below the pendulum we - // need to call activatePendulum() to properly initialized the scene. - if (_roomNumber == 102 && flags[1] == 2) - activatePendulum(); loadPic("auxdr.alg", drawSurface2); } } diff --git a/engines/drascula/saveload.cpp b/engines/drascula/saveload.cpp index d0f16aa941..e67ada50fa 100644 --- a/engines/drascula/saveload.cpp +++ b/engines/drascula/saveload.cpp @@ -255,6 +255,19 @@ bool DrasculaEngine::loadGame(int slot) { if (!(in = _saveFileMan->openForLoading(saveFileName))) { error("missing savegame file %s", saveFileName.c_str()); } + + // If we currently are in room 102 while being attached below the pendulum + // the character is invisible and some surface are temporarily used for other + // things. Reset those before loading the savegame otherwise we may have some + // issues such as the protagonist being invisible after reloading a savegame. + if (_roomNumber == 102 && flags[1] == 2) { + hare_se_ve = 1; + loadPic(96, frontSurface); + loadPic(97, frontSurface); + loadPic(97, extraSurface); + loadPic(99, backSurface); + } + loadMetaData(in, slot, true); Graphics::skipThumbnail(*in); @@ -289,6 +302,11 @@ bool DrasculaEngine::loadGame(int slot) { } enterRoom(roomNum); selectVerb(kVerbNone); + + // When loading room 102 while being attached below the pendulum we + // need to call activatePendulum() to properly initialized the scene. + if (_roomNumber == 102 && flags[1] == 2) + activatePendulum(); return true; } |