mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-25 12:05:53 +00:00
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:
parent
50e735d68b
commit
1c0362d22f
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user