aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorBastien Bouclet2011-02-13 13:22:50 +0100
committerBastien Bouclet2011-02-13 13:22:50 +0100
commite5783d9c27f09456c3f4bb279ce44977210bebda (patch)
treec277f15bf357fc387f5e0d0a18a0e290d885c2a4 /engines
parent93ed359669104f6414e9f3d94a63e55ae46eda30 (diff)
downloadscummvm-rg350-e5783d9c27f09456c3f4bb279ce44977210bebda.tar.gz
scummvm-rg350-e5783d9c27f09456c3f4bb279ce44977210bebda.tar.bz2
scummvm-rg350-e5783d9c27f09456c3f4bb279ce44977210bebda.zip
MOHAWK: Implement opcode 105, Mechanical fortress staircase movie
Diffstat (limited to 'engines')
-rw-r--r--engines/mohawk/myst_stacks/mechanical.cpp22
-rw-r--r--engines/mohawk/myst_stacks/mechanical.h2
2 files changed, 11 insertions, 13 deletions
diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp
index e1896455cf..add87694a8 100644
--- a/engines/mohawk/myst_stacks/mechanical.cpp
+++ b/engines/mohawk/myst_stacks/mechanical.cpp
@@ -51,7 +51,7 @@ MystScriptParser_Mechanical::~MystScriptParser_Mechanical() {
void MystScriptParser_Mechanical::setupOpcodes() {
// "Stack-Specific" Opcodes
OPCODE(104, opcode_104);
- OPCODE(105, opcode_105);
+ OPCODE(105, o_fortressStaircaseMovie);
OPCODE(121, opcode_121);
OPCODE(122, opcode_122);
OPCODE(123, opcode_123);
@@ -231,20 +231,18 @@ void MystScriptParser_Mechanical::opcode_104(uint16 op, uint16 var, uint16 argc,
}
-void MystScriptParser_Mechanical::opcode_105(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
+void MystScriptParser_Mechanical::o_fortressStaircaseMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ debugC(kDebugScript, "Opcode %d: Play Stairs Movement Movie", op);
- if (argc == 0) {
- debugC(kDebugScript, "Opcode %d: Play Stairs Movement Movie", op);
+ VideoHandle staircase = _vm->_video->playMovie(_vm->wrapMovieFilename("hhstairs", kMechanicalStack), 174, 222);
- if (_vm->_varStore->getVar(10)) {
- // TODO: Play Movie from 0 to 1/2 way...
- _vm->_video->playMovieBlocking(_vm->wrapMovieFilename("hhstairs", kMechanicalStack), 174, 222);
- } else {
- // TODO: Play Movie from 1/2 way to end...
- _vm->_video->playMovieBlocking(_vm->wrapMovieFilename("hhstairs", kMechanicalStack), 174, 222);
- }
+ if (_state.staircaseState) {
+ _vm->_video->setVideoBounds(staircase, Audio::Timestamp(0, 840, 600), Audio::Timestamp(0, 1680, 600));
+ } else {
+ _vm->_video->setVideoBounds(staircase, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 840, 600));
}
+
+ _vm->_video->waitUntilMovieEnds(staircase);
}
diff --git a/engines/mohawk/myst_stacks/mechanical.h b/engines/mohawk/myst_stacks/mechanical.h
index 63c8884192..3c7701c12d 100644
--- a/engines/mohawk/myst_stacks/mechanical.h
+++ b/engines/mohawk/myst_stacks/mechanical.h
@@ -69,7 +69,7 @@ private:
void opcode_209_disable();
DECLARE_OPCODE(opcode_104);
- DECLARE_OPCODE(opcode_105);
+ DECLARE_OPCODE(o_fortressStaircaseMovie);
DECLARE_OPCODE(opcode_121);
DECLARE_OPCODE(opcode_122);
DECLARE_OPCODE(opcode_123);