diff options
author | Bastien Bouclet | 2011-01-14 20:08:27 +0000 |
---|---|---|
committer | Bastien Bouclet | 2011-01-14 20:08:27 +0000 |
commit | ca249f5c65b39f440fe6cea3916022c7b4c47e48 (patch) | |
tree | c5e29b9c7d3a4987740cfed1fea2204d9da36212 /engines/mohawk/myst_stacks/myst.cpp | |
parent | e49b35d7068aa872bb1c172f46343b7507b3adc6 (diff) | |
download | scummvm-rg350-ca249f5c65b39f440fe6cea3916022c7b4c47e48.tar.gz scummvm-rg350-ca249f5c65b39f440fe6cea3916022c7b4c47e48.tar.bz2 scummvm-rg350-ca249f5c65b39f440fe6cea3916022c7b4c47e48.zip |
MOHAWK: Implement video looping for Myst's green book
svn-id: r55244
Diffstat (limited to 'engines/mohawk/myst_stacks/myst.cpp')
-rw-r--r-- | engines/mohawk/myst_stacks/myst.cpp | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp index 5760bee22d..4aa91e2433 100644 --- a/engines/mohawk/myst_stacks/myst.cpp +++ b/engines/mohawk/myst_stacks/myst.cpp @@ -220,6 +220,7 @@ void MystScriptParser_Myst::disablePersistentScripts() { _observatoryDayChanging = false; _observatoryYearChanging = false; _observatoryTimeChanging = false; + _greenBookRunning = false; } void MystScriptParser_Myst::runPersistentScripts() { @@ -276,6 +277,9 @@ void MystScriptParser_Myst::runPersistentScripts() { if (_observatoryTimeChanging) observatoryTimeChange_run(); + + if (_greenBookRunning) + greenBook_run(); } uint16 MystScriptParser_Myst::getVar(uint16 var) { @@ -3251,6 +3255,11 @@ void MystScriptParser_Myst::o_greenBook_init(uint16 op, uint16 var, uint16 argc, // Used for Card 4168 (Green Book Movies) debugC(kDebugScript, "Opcode %d: Green book init", op); + _greenBookRunning = true; + _tempVar = 1; +} + +void MystScriptParser_Myst::greenBook_run() { uint loopStart = 0; uint loopEnd = 0; Common::String file; @@ -3265,15 +3274,24 @@ void MystScriptParser_Myst::o_greenBook_init(uint16 op, uint16 var, uint16 argc, file = _vm->wrapMovieFilename("atrusbk2", kMystStack); } - _vm->_sound->stopSound(); - _vm->_sound->pauseBackground(); + if (_tempVar == 1) { + _vm->_sound->stopSound(); + _vm->_sound->pauseBackground(); - if (_globals.ending != 4) { - _vm->_video->playBackgroundMovie(file, 314, 76); + if (_globals.ending != 4) { + _tempVar = 2; + _vm->_video->playBackgroundMovie(file, 314, 76); + } else { + VideoHandle book = _vm->_video->playBackgroundMovie(file, 314, 76, true); + _vm->_video->setVideoBounds(book, Graphics::VideoTimestamp(loopStart, 600), Graphics::VideoTimestamp(loopEnd, 600)); + _tempVar = 0; + } + } else if (_tempVar == 2 && !_vm->_video->isVideoPlaying()) { + VideoHandle book = _vm->_video->playBackgroundMovie(file, 314, 76); + _vm->_video->setVideoBounds(book, Graphics::VideoTimestamp(loopStart, 600), Graphics::VideoTimestamp(loopEnd, 600)); + _vm->_video->setVideoLooping(book, true); + _tempVar = 0; } - - // TODO: Movie play control - // loop between loopStart and loopEnd } void MystScriptParser_Myst::opcode_222(uint16 op, uint16 var, uint16 argc, uint16 *argv) { |