aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMatthew Hoops2010-09-07 15:27:06 +0000
committerMatthew Hoops2010-09-07 15:27:06 +0000
commitf27a0b2c4371ba882aef869091949e4d6e7c9072 (patch)
tree30f2fe7a2c2d6a723b2974087c94c9db8f379660 /engines
parentcb0e54034dbed6a3fc34b391f42ff5a97b2e26e0 (diff)
downloadscummvm-rg350-f27a0b2c4371ba882aef869091949e4d6e7c9072.tar.gz
scummvm-rg350-f27a0b2c4371ba882aef869091949e4d6e7c9072.tar.bz2
scummvm-rg350-f27a0b2c4371ba882aef869091949e4d6e7c9072.zip
MOHAWK: Fix the boiler puzzle videos
svn-id: r52621
Diffstat (limited to 'engines')
-rw-r--r--engines/mohawk/riven_external.cpp79
1 files changed, 42 insertions, 37 deletions
diff --git a/engines/mohawk/riven_external.cpp b/engines/mohawk/riven_external.cpp
index 5a2321a07a..be31ad801e 100644
--- a/engines/mohawk/riven_external.cpp
+++ b/engines/mohawk/riven_external.cpp
@@ -739,54 +739,60 @@ void RivenExternal::xbchangeboiler(uint16 argc, uint16 *argv) {
uint32 water = *_vm->getVar("bblrwtr");
uint32 platform = *_vm->getVar("bblrgrt");
+ // Stop any background videos
+ _vm->_video->stopVideos();
+
if (argv[0] == 1) {
+ // Water is filling/draining from the boiler
if (water == 0) {
- if (platform == 0)
- _vm->_video->activateMLST(10, _vm->getCurCard());
- else
+ if (platform == 1)
_vm->_video->activateMLST(12, _vm->getCurCard());
- } else if (heat == 0) {
- if (platform == 0)
- _vm->_video->activateMLST(19, _vm->getCurCard());
else
+ _vm->_video->activateMLST(10, _vm->getCurCard());
+ } else if (heat == 1) {
+ if (platform == 1)
_vm->_video->activateMLST(22, _vm->getCurCard());
- } else {
- if (platform == 0)
- _vm->_video->activateMLST(13, _vm->getCurCard());
else
+ _vm->_video->activateMLST(19, _vm->getCurCard());
+ } else {
+ if (platform == 1)
_vm->_video->activateMLST(16, _vm->getCurCard());
+ else
+ _vm->_video->activateMLST(13, _vm->getCurCard());
}
} else if (argv[0] == 2 && water != 0) {
- if (heat == 0) {
- if (platform == 0)
- _vm->_video->activateMLST(20, _vm->getCurCard());
- else
+ if (heat == 1) {
+ // Turning on the heat
+ if (platform == 1)
_vm->_video->activateMLST(23, _vm->getCurCard());
+ else
+ _vm->_video->activateMLST(20, _vm->getCurCard());
} else {
- if (platform == 0)
+ // Turning off the heat
+ if (platform == 1)
_vm->_video->activateMLST(18, _vm->getCurCard());
else
_vm->_video->activateMLST(15, _vm->getCurCard());
}
} else if (argv[0] == 3) {
- if (platform == 0) {
- if (water == 0) {
- _vm->_video->activateMLST(11, _vm->getCurCard());
- } else {
- if (heat == 0)
- _vm->_video->activateMLST(17, _vm->getCurCard());
- else
+ if (platform == 1) {
+ // Lowering the platform
+ if (water == 1) {
+ if (heat == 1)
_vm->_video->activateMLST(24, _vm->getCurCard());
- }
- } else {
- if (water == 0) {
- _vm->_video->activateMLST(9, _vm->getCurCard());
- } else {
- if (heat == 0)
- _vm->_video->activateMLST(14, _vm->getCurCard());
else
+ _vm->_video->activateMLST(17, _vm->getCurCard());
+ } else
+ _vm->_video->activateMLST(11, _vm->getCurCard());
+ } else {
+ // Raising the platform
+ if (water == 1) {
+ if (heat == 1)
_vm->_video->activateMLST(21, _vm->getCurCard());
- }
+ else
+ _vm->_video->activateMLST(14, _vm->getCurCard());
+ } else
+ _vm->_video->activateMLST(9, _vm->getCurCard());
}
}
@@ -795,7 +801,8 @@ void RivenExternal::xbchangeboiler(uint16 argc, uint16 *argv) {
else if (argv[0] == 2)
_vm->_sound->playSLST(1, _vm->getCurCard());
- _vm->_video->playMovie(11);
+ _vm->_gfx->changeCursor(kRivenHideCursor);
+ _vm->_video->playMovieBlocking(11);
}
void RivenExternal::xbupdateboiler(uint16 argc, uint16 *argv) {
@@ -804,18 +811,16 @@ void RivenExternal::xbupdateboiler(uint16 argc, uint16 *argv) {
if (heat) {
if (platform == 0) {
- _vm->_video->activateMLST(7, _vm->getCurCard());
- _vm->_video->playMovie(7);
- } else {
_vm->_video->activateMLST(8, _vm->getCurCard());
_vm->_video->playMovie(8);
+ } else {
+ _vm->_video->activateMLST(7, _vm->getCurCard());
+ _vm->_video->playMovie(7);
}
} else {
- _vm->_video->stopMovie(7);
- _vm->_video->stopMovie(8);
+ _vm->_video->disableMovie(7);
+ _vm->_video->disableMovie(8);
}
-
- _vm->refreshCard();
}
void RivenExternal::xbsettrap(uint16 argc, uint16 *argv) {