diff options
author | Johannes Schickel | 2006-05-01 12:57:24 +0000 |
---|---|---|
committer | Johannes Schickel | 2006-05-01 12:57:24 +0000 |
commit | f84699ffbdb49f321ad36d5e330119def56ed484 (patch) | |
tree | e1aedad37f70ea2371a8914f0ed231deeb62b8cd | |
parent | 2eabfd5f287686b7f5186af71cc199b99cf06bdd (diff) | |
download | scummvm-rg350-f84699ffbdb49f321ad36d5e330119def56ed484.tar.gz scummvm-rg350-f84699ffbdb49f321ad36d5e330119def56ed484.tar.bz2 scummvm-rg350-f84699ffbdb49f321ad36d5e330119def56ed484.zip |
Makes malcolm walking into the kyragem room after some time. (fixes half of bug #1471893 ("KYRA1: Graphics glitch when Malcolm turns to stone"))
svn-id: r22255
-rw-r--r-- | engines/kyra/sequences_v1.cpp | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/engines/kyra/sequences_v1.cpp b/engines/kyra/sequences_v1.cpp index 0f1c36ceed..15425ce2e4 100644 --- a/engines/kyra/sequences_v1.cpp +++ b/engines/kyra/sequences_v1.cpp @@ -902,9 +902,19 @@ int KyraEngine::seq_playEnd() { _screen->_curPage = 0; _beadStateVar = 0; _malcolmFlag = 0; - // wired stuff with _unkEndSeqVar2 which needs timer handling + _unkEndSeqVar2 = _system->getMillis() + 600 * _tickLength; _screen->copyRegion(312, 0, 312, 0, 8, 136, 0, 2); } + + // TODO: better handling. This timer shouldn't count when the menu is open or something. + if (_unkEndSeqVar2 != -1) { + if (_system->getMillis() > (uint32)_unkEndSeqVar2) { + _unkEndSeqVar2 = -1; + if (!_malcolmFlag) + _malcolmFlag = 1; + } + } + if (handleMalcolmFlag()) { _beadStateVar = 0; _malcolmFlag = 12; @@ -1335,14 +1345,15 @@ int KyraEngine::handleBeadState() { if (beadState1.x != -1 && _endSequenceBackUpRect) { _screen->copyFromCurPageBlock(beadState1.x >> 3, beadState1.y, beadState1.width, beadState1.height, _endSequenceBackUpRect); _screen->addBitBlitRect(beadState1.x, beadState1.y, beadState1.width2, beadState1.height); - } else { - beadState1.x = -1; - beadState1.tableIndex = 0; - timer1 = 0; - timer2 = 0; - _lastDisplayedPanPage = 0; - return 1; } + + beadState1.x = -1; + beadState1.tableIndex = 0; + timer1 = 0; + timer2 = 0; + _lastDisplayedPanPage = 0; + return 1; + break; case 1: if (beadState1.x != -1) { |