aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/mohawk/myst_stacks/channelwood.cpp37
-rw-r--r--engines/mohawk/myst_stacks/channelwood.h2
2 files changed, 16 insertions, 23 deletions
diff --git a/engines/mohawk/myst_stacks/channelwood.cpp b/engines/mohawk/myst_stacks/channelwood.cpp
index 77a12644f5..562997b8ea 100644
--- a/engines/mohawk/myst_stacks/channelwood.cpp
+++ b/engines/mohawk/myst_stacks/channelwood.cpp
@@ -49,7 +49,7 @@ MystScriptParser_Channelwood::~MystScriptParser_Channelwood() {
void MystScriptParser_Channelwood::setupOpcodes() {
// "Stack-Specific" Opcodes
OPCODE(100, o_bridgeToggle);
- OPCODE(101, opcode_101);
+ OPCODE(101, o_pipeExtend);
OPCODE(102, opcode_102);
OPCODE(104, o_waterTankValveOpen);
OPCODE(105, o_leverStartMove);
@@ -234,6 +234,7 @@ void MystScriptParser_Channelwood::o_bridgeToggle(uint16 op, uint16 var, uint16
VideoHandle bridge = _vm->_video->playMovie(_vm->wrapMovieFilename("bridge", kChannelwoodStack), 292, 203);
+ // Toggle bridge state
if (_state.waterPumpBridgeState)
_vm->_video->setVideoBounds(bridge, Graphics::VideoTimestamp(3050, 600), Graphics::VideoTimestamp(6100, 600));
else
@@ -242,31 +243,23 @@ void MystScriptParser_Channelwood::o_bridgeToggle(uint16 op, uint16 var, uint16
_vm->_video->waitUntilMovieEnds(bridge);
}
-void MystScriptParser_Channelwood::opcode_101(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
+void MystScriptParser_Channelwood::o_pipeExtend(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ debugC(kDebugScript, "Opcode %d: Play Pipe Movie and Sound", op);
- if (argc == 1) {
- debugC(kDebugScript, "Opcode %d: Play Pipe Movie and Sound", op);
+ uint16 soundId = argv[0];
+ debugC(kDebugScript, "\tsoundId: %d", soundId);
- uint16 soundId = argv[0];
- debugC(kDebugScript, "\tsoundId: %d", soundId);
+ _vm->_sound->replaceSoundMyst(soundId);
+ VideoHandle pipe = _vm->_video->playMovie(_vm->wrapMovieFilename("pipebrid", kChannelwoodStack), 267, 170);
- _vm->_sound->replaceSoundMyst(soundId);
+ // Toggle pipe state
+ if (_state.pipeState)
+ _vm->_video->setVideoBounds(pipe, Graphics::VideoTimestamp(3040, 600), Graphics::VideoTimestamp(6080, 600));
+ else
+ _vm->_video->setVideoBounds(pipe, Graphics::VideoTimestamp(0, 600), Graphics::VideoTimestamp(3040, 600));
- // TODO: Get Movie Location from Invoking Resource Rect, rather than
- // hardcoded 267, 170 ?
-
- // TODO: Need version of playMovie blocking which allows selection
- // of start and finish points.
- if (!_vm->_varStore->getVar(6)) {
- // Play Pipe Extending i.e. 0 to 1/2 way through file
- _vm->_video->playMovieBlocking(_vm->wrapMovieFilename("pipebrid", kChannelwoodStack), 267, 170);
- } else {
- // Play Pipe Retracting i.e. 1/2 way to end of file
- _vm->_video->playMovieBlocking(_vm->wrapMovieFilename("pipebrid", kChannelwoodStack), 267, 170);
- }
- } else
- unknown(op, var, argc, argv);
+ _vm->_video->waitUntilMovieEnds(pipe);
+ _vm->_sound->resumeBackgroundMyst();
}
void MystScriptParser_Channelwood::opcode_102(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
diff --git a/engines/mohawk/myst_stacks/channelwood.h b/engines/mohawk/myst_stacks/channelwood.h
index 349a73dd08..9967bcd8c1 100644
--- a/engines/mohawk/myst_stacks/channelwood.h
+++ b/engines/mohawk/myst_stacks/channelwood.h
@@ -55,7 +55,7 @@ private:
void opcode_203_disable();
DECLARE_OPCODE(o_bridgeToggle);
- DECLARE_OPCODE(opcode_101);
+ DECLARE_OPCODE(o_pipeExtend);
DECLARE_OPCODE(opcode_102);
DECLARE_OPCODE(o_waterTankValveOpen);
DECLARE_OPCODE(o_leverStartMove);