aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/sequences_v1.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2006-05-01 12:57:24 +0000
committerJohannes Schickel2006-05-01 12:57:24 +0000
commitf84699ffbdb49f321ad36d5e330119def56ed484 (patch)
treee1aedad37f70ea2371a8914f0ed231deeb62b8cd /engines/kyra/sequences_v1.cpp
parent2eabfd5f287686b7f5186af71cc199b99cf06bdd (diff)
downloadscummvm-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
Diffstat (limited to 'engines/kyra/sequences_v1.cpp')
-rw-r--r--engines/kyra/sequences_v1.cpp27
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) {