diff options
author | Tobias Gunkel | 2012-01-29 17:18:31 +0100 |
---|---|---|
committer | Tobias Gunkel | 2012-02-11 08:29:54 +0100 |
commit | 91bdf9a3f5abff5651679b414de878a890219b44 (patch) | |
tree | f28173d7748fce9b3a54573adb8379b2f3a392ed | |
parent | 984c2a05e4e4ec643c1135c6b087f6e7faf1997f (diff) | |
download | scummvm-rg350-91bdf9a3f5abff5651679b414de878a890219b44.tar.gz scummvm-rg350-91bdf9a3f5abff5651679b414de878a890219b44.tar.bz2 scummvm-rg350-91bdf9a3f5abff5651679b414de878a890219b44.zip |
SCUMM: fix cutscenes by reintroduction of freeze modes
-rw-r--r-- | engines/scumm/script_v0.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/engines/scumm/script_v0.cpp b/engines/scumm/script_v0.cpp index a7187237f3..faac991193 100644 --- a/engines/scumm/script_v0.cpp +++ b/engines/scumm/script_v0.cpp @@ -636,14 +636,13 @@ void ScummEngine_v0::setMode(byte mode) { _redrawSentenceLine = false; // Note: do not change freeze state here state = USERSTATE_SET_IFACE | - USERSTATE_SET_CURSOR | - USERSTATE_SET_FREEZE; + USERSTATE_SET_CURSOR; break; case kModeKeypad: _redrawSentenceLine = false; state = USERSTATE_SET_IFACE | USERSTATE_SET_CURSOR | USERSTATE_CURSOR_ON | - USERSTATE_SET_FREEZE; + USERSTATE_SET_FREEZE | USERSTATE_FREEZE_ON; break; case kModeNormal: case kModeNoNewKid: @@ -927,12 +926,14 @@ void ScummEngine_v0::o_cutscene() { vm.cutSceneData[0] = _currentMode; vm.cutSceneData[2] = _currentRoom; + freezeScripts(0); setMode(kModeCutscene); _sentenceNum = 0; resetSentence(); vm.cutScenePtr[0] = 0; + vm.cutSceneScript[0] = 0; } void ScummEngine_v0::o_endCutscene() { @@ -946,8 +947,13 @@ void ScummEngine_v0::o_endCutscene() { if (_currentMode == kModeKeypad) { startScene(vm.cutSceneData[2], 0, 0); + // in contrast to the normal keypad behavior we unfreeze scripts here + unfreezeScripts(); } else { + unfreezeScripts(); actorFollowCamera(VAR(VAR_EGO)); + // set mode again to have the freeze mode right + setMode(vm.cutSceneData[0]); _redrawSentenceLine = true; } } |