aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/myst_stacks
diff options
context:
space:
mode:
authorBastien Bouclet2011-01-11 19:52:58 +0000
committerBastien Bouclet2011-01-11 19:52:58 +0000
commitb1de27ed8f54b7321eaee165f69c90ac73d262f7 (patch)
tree028c2051a41960f7c9996002325e05a8059508fd /engines/mohawk/myst_stacks
parentf6b7979277cc83e29ac9c6a7dc28a1e1e0dccfbf (diff)
downloadscummvm-rg350-b1de27ed8f54b7321eaee165f69c90ac73d262f7.tar.gz
scummvm-rg350-b1de27ed8f54b7321eaee165f69c90ac73d262f7.tar.bz2
scummvm-rg350-b1de27ed8f54b7321eaee165f69c90ac73d262f7.zip
MOHAWK: Implement Myst imager videos seeking / looping
svn-id: r55208
Diffstat (limited to 'engines/mohawk/myst_stacks')
-rw-r--r--engines/mohawk/myst_stacks/myst.cpp35
1 files changed, 24 insertions, 11 deletions
diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp
index c33c32604a..adfb195fc9 100644
--- a/engines/mohawk/myst_stacks/myst.cpp
+++ b/engines/mohawk/myst_stacks/myst.cpp
@@ -1153,31 +1153,43 @@ void MystScriptParser_Myst::o_imagerPlayButton(uint16 op, uint16 var, uint16 arg
break;
case 1: // Mountain
if (_state.imagerActive) {
- // TODO: Play from 11180 to 16800
+ // Mountains disappearing
Common::String file = _vm->wrapMovieFilename("vltmntn", kMystStack);
- _vm->_video->playBackgroundMovie(file, 159, 96, false);
+ VideoHandle mountain = _vm->_video->playBackgroundMovie(file, 159, 96, false);
+ _vm->_video->setVideoBounds(mountain, Graphics::VideoTimestamp(11180, 600), Graphics::VideoTimestamp(16800, 600));
_state.imagerActive = 0;
} else {
- // TODO: Play from 0 to 11180
+ // Mountains appearing
Common::String file = _vm->wrapMovieFilename("vltmntn", kMystStack);
- _vm->_video->playBackgroundMovie(file, 159, 96, false);
+ VideoHandle mountain = _vm->_video->playBackgroundMovie(file, 159, 96, false);
+ _vm->_video->setVideoBounds(mountain, Graphics::VideoTimestamp(0, 600), Graphics::VideoTimestamp(11180, 600));
_state.imagerActive = 1;
}
break;
case 2: // Water
+ _imagerMovie->setBlocking(false);
+
if (_state.imagerActive) {
_vm->_sound->replaceSound(argv[1]);
- // TODO: Play from 4204 to 6040
- _imagerMovie->playMovie();
+ // Water disappearing
+ VideoHandle water = _imagerMovie->playMovie();
+ _vm->_video->setVideoBounds(water, Graphics::VideoTimestamp(4204, 600), Graphics::VideoTimestamp(6040, 600));
+ _vm->_video->setVideoLooping(water, false);
_state.imagerActive = 0;
} else {
- // TODO: Play from 0 to 1814
- // Then play from 1814 to 4204, looping
- _imagerMovie->playMovie();
+ // Water appearing
+ VideoHandle water = _imagerMovie->playMovie();
+ _vm->_video->setVideoBounds(water, Graphics::VideoTimestamp(0, 600), Graphics::VideoTimestamp(1814, 600));
+ _vm->_video->waitUntilMovieEnds(water);
+
+ // Water looping
+ water = _imagerMovie->playMovie();
+ _vm->_video->setVideoBounds(water, Graphics::VideoTimestamp(1814, 600), Graphics::VideoTimestamp(4204, 600));
+ _vm->_video->setVideoLooping(water, true);
_state.imagerActive = 1;
}
@@ -2937,8 +2949,9 @@ void MystScriptParser_Myst::imager_run() {
_imagerRunning = false;
if (_state.imagerActive && _state.imagerSelection == 67) {
- // TODO: play between 1814 and 4204 looping
- _imagerMovie->playMovie();
+ VideoHandle water = _imagerMovie->playMovie();
+ _vm->_video->setVideoBounds(water, Graphics::VideoTimestamp(1814, 600), Graphics::VideoTimestamp(4204, 600));
+ _vm->_video->setVideoLooping(water, true);
}
}