aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/myst_stacks
diff options
context:
space:
mode:
authorBastien Bouclet2011-02-19 09:06:59 +0100
committerBastien Bouclet2011-02-22 20:38:54 +0100
commite507115405d50a2e2f8c006238b33f0910db2354 (patch)
treeaf1d15f805dd1fb07543a5d20f95b618002810b5 /engines/mohawk/myst_stacks
parentbc39d327acd6fe5622848f7f98f4159c0e4afb4c (diff)
downloadscummvm-rg350-e507115405d50a2e2f8c006238b33f0910db2354.tar.gz
scummvm-rg350-e507115405d50a2e2f8c006238b33f0910db2354.tar.bz2
scummvm-rg350-e507115405d50a2e2f8c006238b33f0910db2354.zip
MOHAWK: Implement Mechanical elevator movies
Diffstat (limited to 'engines/mohawk/myst_stacks')
-rw-r--r--engines/mohawk/myst_stacks/mechanical.cpp21
-rw-r--r--engines/mohawk/myst_stacks/mechanical.h2
2 files changed, 10 insertions, 13 deletions
diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp
index 0596d29d88..3bf7f2105a 100644
--- a/engines/mohawk/myst_stacks/mechanical.cpp
+++ b/engines/mohawk/myst_stacks/mechanical.cpp
@@ -58,7 +58,7 @@ void Mechanical::setupOpcodes() {
OPCODE(106, o_elevatorRotationStart);
OPCODE(107, o_elevatorRotationMove);
OPCODE(108, o_elevatorRotationStop);
- OPCODE(121, opcode_121);
+ OPCODE(121, o_elevatorWindowMovie);
OPCODE(122, opcode_122);
OPCODE(123, opcode_123);
OPCODE(124, opcode_124);
@@ -326,19 +326,16 @@ void Mechanical::o_elevatorRotationStop(uint16 op, uint16 var, uint16 argc, uint
_vm->checkCursorHints();
}
-void Mechanical::opcode_121(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
+void Mechanical::o_elevatorWindowMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- if (argc == 2) {
- uint16 startTime = argv[0];
- uint16 endTime = argv[1];
+ uint16 startTime = argv[0];
+ uint16 endTime = argv[1];
- warning("TODO: Opcode %d Movie Time Index %d to %d\n", op, startTime, endTime);
- // TODO: Need version of playMovie blocking which allows selection
- // of start and finish points.
- _vm->_video->playMovieBlocking(_vm->wrapMovieFilename("ewindow", kMechanicalStack), 253, 0);
- } else
- unknown(op, var, argc, argv);
+ debugC(kDebugScript, "Opcode %d Movie Time Index %d to %d", op, startTime, endTime);
+
+ VideoHandle window = _vm->_video->playMovie(_vm->wrapMovieFilename("ewindow", kMechanicalStack), 253, 0);
+ _vm->_video->setVideoBounds(window, Audio::Timestamp(0, startTime, 600), Audio::Timestamp(0, endTime, 600));
+ _vm->_video->waitUntilMovieEnds(window);
}
void Mechanical::opcode_122(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
diff --git a/engines/mohawk/myst_stacks/mechanical.h b/engines/mohawk/myst_stacks/mechanical.h
index 0e20b8e57a..065f27d745 100644
--- a/engines/mohawk/myst_stacks/mechanical.h
+++ b/engines/mohawk/myst_stacks/mechanical.h
@@ -68,7 +68,7 @@ private:
DECLARE_OPCODE(o_elevatorRotationStart);
DECLARE_OPCODE(o_elevatorRotationMove);
DECLARE_OPCODE(o_elevatorRotationStop);
- DECLARE_OPCODE(opcode_121);
+ DECLARE_OPCODE(o_elevatorWindowMovie);
DECLARE_OPCODE(opcode_122);
DECLARE_OPCODE(opcode_123);
DECLARE_OPCODE(opcode_124);