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.
This commit is contained in:
Thierry Crozat 2016-04-11 00:09:35 +01:00
parent 50e735d68b
commit 1c0362d22f
2 changed files with 18 additions and 4 deletions

View File

@ -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);
}
}

View File

@ -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;
}