MOHAWK: Allow changing video rates
getVideoDuration now returns an Timestamp
This commit is contained in:
parent
f889457d3d
commit
fdad5ec7b4
4 changed files with 16 additions and 10 deletions
|
@ -830,7 +830,7 @@ static void sunnersTopStairsTimer(MohawkEngine_Riven *vm) {
|
||||||
} else if (sunnerTime < vm->getTotalPlayTime()) {
|
} else if (sunnerTime < vm->getTotalPlayTime()) {
|
||||||
VideoHandle handle = vm->_video->playMovieRiven(vm->_rnd->getRandomNumberRng(1, 3));
|
VideoHandle handle = vm->_video->playMovieRiven(vm->_rnd->getRandomNumberRng(1, 3));
|
||||||
|
|
||||||
timerTime = vm->_video->getDuration(handle) + vm->_rnd->getRandomNumberRng(2, 15) * 1000;
|
timerTime = vm->_video->getDuration(handle).msecs() + vm->_rnd->getRandomNumberRng(2, 15) * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
sunnerTime = timerTime + vm->getTotalPlayTime();
|
sunnerTime = timerTime + vm->getTotalPlayTime();
|
||||||
|
@ -868,7 +868,7 @@ static void sunnersMidStairsTimer(MohawkEngine_Riven *vm) {
|
||||||
|
|
||||||
VideoHandle handle = vm->_video->playMovieRiven(movie);
|
VideoHandle handle = vm->_video->playMovieRiven(movie);
|
||||||
|
|
||||||
timerTime = vm->_video->getDuration(handle) + vm->_rnd->getRandomNumberRng(1, 10) * 1000;
|
timerTime = vm->_video->getDuration(handle).msecs() + vm->_rnd->getRandomNumberRng(1, 10) * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
sunnerTime = timerTime + vm->getTotalPlayTime();
|
sunnerTime = timerTime + vm->getTotalPlayTime();
|
||||||
|
@ -898,7 +898,7 @@ static void sunnersLowerStairsTimer(MohawkEngine_Riven *vm) {
|
||||||
} else if (sunnerTime < vm->getTotalPlayTime()) {
|
} else if (sunnerTime < vm->getTotalPlayTime()) {
|
||||||
VideoHandle handle = vm->_video->playMovieRiven(vm->_rnd->getRandomNumberRng(3, 5));
|
VideoHandle handle = vm->_video->playMovieRiven(vm->_rnd->getRandomNumberRng(3, 5));
|
||||||
|
|
||||||
timerTime = vm->_video->getDuration(handle) + vm->_rnd->getRandomNumberRng(1, 30) * 1000;
|
timerTime = vm->_video->getDuration(handle).msecs() + vm->_rnd->getRandomNumberRng(1, 30) * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
sunnerTime = timerTime + vm->getTotalPlayTime();
|
sunnerTime = timerTime + vm->getTotalPlayTime();
|
||||||
|
@ -932,7 +932,7 @@ static void sunnersBeachTimer(MohawkEngine_Riven *vm) {
|
||||||
vm->_video->activateMLST(mlstID, vm->getCurCard());
|
vm->_video->activateMLST(mlstID, vm->getCurCard());
|
||||||
VideoHandle handle = vm->_video->playMovieRiven(mlstID);
|
VideoHandle handle = vm->_video->playMovieRiven(mlstID);
|
||||||
|
|
||||||
timerTime = vm->_video->getDuration(handle) + vm->_rnd->getRandomNumberRng(1, 30) * 1000;
|
timerTime = vm->_video->getDuration(handle).msecs() + vm->_rnd->getRandomNumberRng(1, 30) * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
sunnerTime = timerTime + vm->getTotalPlayTime();
|
sunnerTime = timerTime + vm->getTotalPlayTime();
|
||||||
|
|
|
@ -1467,7 +1467,7 @@ static void catherineViewerIdleTimer(MohawkEngine_Riven *vm) {
|
||||||
VideoHandle videoHandle = vm->_video->playMovieRiven(30);
|
VideoHandle videoHandle = vm->_video->playMovieRiven(30);
|
||||||
|
|
||||||
// Reset the timer
|
// Reset the timer
|
||||||
vm->installTimer(&catherineViewerIdleTimer, vm->_video->getDuration(videoHandle) + vm->_rnd->getRandomNumber(60) * 1000);
|
vm->installTimer(&catherineViewerIdleTimer, vm->_video->getDuration(videoHandle).msecs() + vm->_rnd->getRandomNumber(60) * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RivenExternal::xglview_prisonon(uint16 argc, uint16 *argv) {
|
void RivenExternal::xglview_prisonon(uint16 argc, uint16 *argv) {
|
||||||
|
@ -1507,7 +1507,7 @@ void RivenExternal::xglview_prisonon(uint16 argc, uint16 *argv) {
|
||||||
_vm->_video->activateMLST(cathMovie, _vm->getCurCard());
|
_vm->_video->activateMLST(cathMovie, _vm->getCurCard());
|
||||||
VideoHandle videoHandle = _vm->_video->playMovieRiven(30);
|
VideoHandle videoHandle = _vm->_video->playMovieRiven(30);
|
||||||
|
|
||||||
timeUntilNextMovie = _vm->_video->getDuration(videoHandle) + _vm->_rnd->getRandomNumber(60) * 1000;
|
timeUntilNextMovie = _vm->_video->getDuration(videoHandle).msecs() + _vm->_rnd->getRandomNumber(60) * 1000;
|
||||||
} else {
|
} else {
|
||||||
// Otherwise, just redraw the imager
|
// Otherwise, just redraw the imager
|
||||||
timeUntilNextMovie = _vm->_rnd->getRandomNumberRng(10, 20) * 1000;
|
timeUntilNextMovie = _vm->_rnd->getRandomNumberRng(10, 20) * 1000;
|
||||||
|
@ -2335,7 +2335,7 @@ static void rebelPrisonWindowTimer(MohawkEngine_Riven *vm) {
|
||||||
VideoHandle handle = vm->_video->playMovieRiven(movie);
|
VideoHandle handle = vm->_video->playMovieRiven(movie);
|
||||||
|
|
||||||
// Ensure the next video starts after this one ends
|
// Ensure the next video starts after this one ends
|
||||||
uint32 timeUntilNextVideo = vm->_video->getDuration(handle) + vm->_rnd->getRandomNumberRng(38, 58) * 1000;
|
uint32 timeUntilNextVideo = vm->_video->getDuration(handle).msecs() + vm->_rnd->getRandomNumberRng(38, 58) * 1000;
|
||||||
|
|
||||||
// Save the time in case we leave the card and return
|
// Save the time in case we leave the card and return
|
||||||
vm->_vars["rvillagetime"] = timeUntilNextVideo + vm->getTotalPlayTime();
|
vm->_vars["rvillagetime"] = timeUntilNextVideo + vm->getTotalPlayTime();
|
||||||
|
|
|
@ -493,9 +493,9 @@ uint32 VideoManager::getTime(VideoHandle handle) {
|
||||||
return _videoStreams[handle]->getTime();
|
return _videoStreams[handle]->getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 VideoManager::getDuration(VideoHandle handle) {
|
Audio::Timestamp VideoManager::getDuration(VideoHandle handle) {
|
||||||
assert(handle != NULL_VID_HANDLE);
|
assert(handle != NULL_VID_HANDLE);
|
||||||
return _videoStreams[handle]->getDuration().msecs();
|
return _videoStreams[handle]->getDuration();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VideoManager::endOfVideo(VideoHandle handle) {
|
bool VideoManager::endOfVideo(VideoHandle handle) {
|
||||||
|
@ -536,6 +536,11 @@ void VideoManager::setVideoLooping(VideoHandle handle, bool loop) {
|
||||||
_videoStreams[handle].loop = loop;
|
_videoStreams[handle].loop = loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VideoManager::setVideoRate(VideoHandle handle, const Common::Rational &rate) {
|
||||||
|
assert(handle != NULL_VID_HANDLE);
|
||||||
|
_videoStreams[handle]->setRate(rate);
|
||||||
|
}
|
||||||
|
|
||||||
void VideoManager::pauseMovie(VideoHandle handle, bool pause) {
|
void VideoManager::pauseMovie(VideoHandle handle, bool pause) {
|
||||||
assert(handle != NULL_VID_HANDLE);
|
assert(handle != NULL_VID_HANDLE);
|
||||||
_videoStreams[handle]->pauseVideo(pause);
|
_videoStreams[handle]->pauseVideo(pause);
|
||||||
|
|
|
@ -101,12 +101,13 @@ public:
|
||||||
int getCurFrame(VideoHandle handle);
|
int getCurFrame(VideoHandle handle);
|
||||||
uint32 getFrameCount(VideoHandle handle);
|
uint32 getFrameCount(VideoHandle handle);
|
||||||
uint32 getTime(VideoHandle handle);
|
uint32 getTime(VideoHandle handle);
|
||||||
uint32 getDuration(VideoHandle videoHandle);
|
Audio::Timestamp getDuration(VideoHandle videoHandle);
|
||||||
bool endOfVideo(VideoHandle handle);
|
bool endOfVideo(VideoHandle handle);
|
||||||
void setVideoBounds(VideoHandle handle, Audio::Timestamp start, Audio::Timestamp end);
|
void setVideoBounds(VideoHandle handle, Audio::Timestamp start, Audio::Timestamp end);
|
||||||
void drawVideoFrame(VideoHandle handle, Audio::Timestamp time);
|
void drawVideoFrame(VideoHandle handle, Audio::Timestamp time);
|
||||||
void seekToTime(VideoHandle handle, Audio::Timestamp time);
|
void seekToTime(VideoHandle handle, Audio::Timestamp time);
|
||||||
void setVideoLooping(VideoHandle handle, bool loop);
|
void setVideoLooping(VideoHandle handle, bool loop);
|
||||||
|
void setVideoRate(VideoHandle handle, const Common::Rational &rate);
|
||||||
void waitUntilMovieEnds(VideoHandle videoHandle);
|
void waitUntilMovieEnds(VideoHandle videoHandle);
|
||||||
void delayUntilMovieEnds(VideoHandle videoHandle);
|
void delayUntilMovieEnds(VideoHandle videoHandle);
|
||||||
void pauseMovie(VideoHandle videoHandle, bool pause);
|
void pauseMovie(VideoHandle videoHandle, bool pause);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue