diff options
author | Matthew Hoops | 2010-09-07 15:27:06 +0000 |
---|---|---|
committer | Matthew Hoops | 2010-09-07 15:27:06 +0000 |
commit | f27a0b2c4371ba882aef869091949e4d6e7c9072 (patch) | |
tree | 30f2fe7a2c2d6a723b2974087c94c9db8f379660 /engines | |
parent | cb0e54034dbed6a3fc34b391f42ff5a97b2e26e0 (diff) | |
download | scummvm-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.cpp | 79 |
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) { |