diff options
author | Matthew Hoops | 2010-06-22 05:10:43 +0000 |
---|---|---|
committer | Matthew Hoops | 2010-06-22 05:10:43 +0000 |
commit | e3b3641db22ba38177a66d2ff73f342075f0687b (patch) | |
tree | 60b3182917865eebac4c107586259d80b0c1722a /engines/mohawk/riven_external.cpp | |
parent | 727841ef913bbf61d035847b705ba47e488c57aa (diff) | |
download | scummvm-rg350-e3b3641db22ba38177a66d2ff73f342075f0687b.tar.gz scummvm-rg350-e3b3641db22ba38177a66d2ff73f342075f0687b.tar.bz2 scummvm-rg350-e3b3641db22ba38177a66d2ff73f342075f0687b.zip |
Finish implementation of the jspit elevator logic.
svn-id: r50136
Diffstat (limited to 'engines/mohawk/riven_external.cpp')
-rw-r--r-- | engines/mohawk/riven_external.cpp | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/engines/mohawk/riven_external.cpp b/engines/mohawk/riven_external.cpp index 4e6bba1c2a..8ba4361f3f 100644 --- a/engines/mohawk/riven_external.cpp +++ b/engines/mohawk/riven_external.cpp @@ -1043,8 +1043,10 @@ int RivenExternal::jspitElevatorLoop() { void RivenExternal::xhandlecontrolup(uint16 argc, uint16 *argv) { int changeLevel = jspitElevatorLoop(); + // If we've moved the handle down, go down a floor if (changeLevel == -1) { - // TODO: Run movie + _vm->_video->playMovieBlocking(1); + _vm->_video->playMovieBlocking(2); _vm->changeToCard(_vm->matchRMAPToCard(0x1e374)); } } @@ -1052,8 +1054,10 @@ void RivenExternal::xhandlecontrolup(uint16 argc, uint16 *argv) { void RivenExternal::xhandlecontroldown(uint16 argc, uint16 *argv) { int changeLevel = jspitElevatorLoop(); + // If we've moved the handle up, go up a floor if (changeLevel == 1) { - // TODO: Run movie + _vm->_video->playMovieBlocking(1); + _vm->_video->playMovieBlocking(2); _vm->changeToCard(_vm->matchRMAPToCard(0x1e374)); } } @@ -1061,11 +1065,29 @@ void RivenExternal::xhandlecontroldown(uint16 argc, uint16 *argv) { void RivenExternal::xhandlecontrolmid(uint16 argc, uint16 *argv) { int changeLevel = jspitElevatorLoop(); + if (changeLevel == 0) + return; + + // Play the handle moving video + if (changeLevel == 1) + _vm->_video->playMovieBlocking(7); + else + _vm->_video->playMovieBlocking(6); + + // If the whark's mouth is open, close it + uint32 *mouthVar = _vm->matchVarToString("jwmouth"); + if (*mouthVar == 1) { + _vm->_video->playMovieBlocking(3); + _vm->_video->playMovieBlocking(8); + *mouthVar = 0; + } + + // Play the elevator video and then change the card if (changeLevel == 1) { - // TODO: Run movie + _vm->_video->playMovieBlocking(5); _vm->changeToCard(_vm->matchRMAPToCard(0x1e597)); - } else if (changeLevel == -1) { - // TODO: Run movie + } else { + _vm->_video->playMovieBlocking(4); _vm->changeToCard(_vm->matchRMAPToCard(0x1e29c)); } } |