diff options
author | Matthew Hoops | 2011-06-14 10:35:58 -0400 |
---|---|---|
committer | Matthew Hoops | 2011-06-14 10:36:49 -0400 |
commit | 5174832e314b4c63ac2a7fd89c09f48fafc68a69 (patch) | |
tree | 89e1dce2b174c58be06f16683bac601810ebe2e0 /engines/mohawk/riven_scripts.cpp | |
parent | de96474672cc8c18fe189dda2958c505692f9389 (diff) | |
download | scummvm-rg350-5174832e314b4c63ac2a7fd89c09f48fafc68a69.tar.gz scummvm-rg350-5174832e314b4c63ac2a7fd89c09f48fafc68a69.tar.bz2 scummvm-rg350-5174832e314b4c63ac2a7fd89c09f48fafc68a69.zip |
MOHAWK: Finish implementation of Riven's storeMovieOpcode opcode
Diffstat (limited to 'engines/mohawk/riven_scripts.cpp')
-rw-r--r-- | engines/mohawk/riven_scripts.cpp | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/engines/mohawk/riven_scripts.cpp b/engines/mohawk/riven_scripts.cpp index b3d5369a84..8abce10f3b 100644 --- a/engines/mohawk/riven_scripts.cpp +++ b/engines/mohawk/riven_scripts.cpp @@ -536,6 +536,10 @@ void RivenScript::fadeAmbientSounds(uint16 op, uint16 argc, uint16 *argv) { // Command 38: Store an opcode for use when playing a movie (movie id, time high, time low, opcode, arguments...) void RivenScript::storeMovieOpcode(uint16 op, uint16 argc, uint16 *argv) { + // This opcode is used to delay an opcode's usage based on the elapsed + // time of a specified movie. However, every use in the game is for + // delaying an activateSLST opcode. + uint32 scriptSize = 6 + (argc - 4) * 2; // Create our dummy script @@ -557,13 +561,11 @@ void RivenScript::storeMovieOpcode(uint16 op, uint16 argc, uint16 *argv) { // Store the script RivenScriptManager::StoredMovieOpcode storedOp; storedOp.script = script; - storedOp.time = delayTime + _vm->getTotalPlayTime(); + storedOp.time = delayTime; storedOp.id = argv[0]; - // TODO: Actually store the movie and call it in our movie loop - // For now, just delete the script and move on - //_vm->_scriptMan->setStoredMovieOpcode(storedOp); - delete script; + // Store the opcode for later + _vm->_scriptMan->setStoredMovieOpcode(storedOp); } else { // Run immediately if we have no delay script->runScript(); @@ -716,18 +718,10 @@ void RivenScriptManager::setStoredMovieOpcode(const StoredMovieOpcode &op) { _storedMovieOpcode.time = op.time; } -void RivenScriptManager::runStoredMovieOpcode(uint16 id) { +void RivenScriptManager::runStoredMovieOpcode() { if (_storedMovieOpcode.script) { - if (_storedMovieOpcode.id == id) { - // If we've passed the time, run our script - if (_vm->getTotalPlayTime() >= _storedMovieOpcode.time) { - _storedMovieOpcode.script->runScript(); - clearStoredMovieOpcode(); - } - } else { - // We're on a completely different video, kill off any remaining opcode - clearStoredMovieOpcode(); - } + _storedMovieOpcode.script->runScript(); + clearStoredMovieOpcode(); } } |