aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorThierry Crozat2016-04-11 00:09:35 +0100
committerThierry Crozat2016-04-11 01:36:54 +0100
commit1c0362d22f2d16fa87ff4789001e6a4f549eb3ec (patch)
tree430ac763fc89922f9ca0b5270e2e21ecb1251c5f /engines
parent50e735d68b0e42eae6648d1852c8a57a4ca22cac (diff)
downloadscummvm-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.
Diffstat (limited to 'engines')
-rw-r--r--engines/drascula/drascula.cpp4
-rw-r--r--engines/drascula/saveload.cpp18
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;
}