diff options
author | Paul Gilbert | 2016-08-31 23:12:53 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-08-31 23:12:53 -0400 |
commit | 2e9c21cd84f47c51ebe8a847f2e4c359a106c751 (patch) | |
tree | 5ac3b079e0d10def92491742d8239ea6f155ab34 /engines/titanic/support | |
parent | a1d51d31420ca07228fbcbe05624b5cf3a407133 (diff) | |
download | scummvm-rg350-2e9c21cd84f47c51ebe8a847f2e4c359a106c751.tar.gz scummvm-rg350-2e9c21cd84f47c51ebe8a847f2e4c359a106c751.tar.bz2 scummvm-rg350-2e9c21cd84f47c51ebe8a847f2e4c359a106c751.zip |
TITANIC: Improvements to view change animations
Diffstat (limited to 'engines/titanic/support')
-rw-r--r-- | engines/titanic/support/avi_surface.cpp | 7 | ||||
-rw-r--r-- | engines/titanic/support/movie.cpp | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/engines/titanic/support/avi_surface.cpp b/engines/titanic/support/avi_surface.cpp index e43127ccb9..79c1badf61 100644 --- a/engines/titanic/support/avi_surface.cpp +++ b/engines/titanic/support/avi_surface.cpp @@ -364,7 +364,7 @@ void AVISurface::playCutscene(const Rect &r, uint startFrame, uint endFrame) { _movieFrameSurface[0]->h != r.height(); startAtFrame(startFrame); - while (getFrame() <= (int)endFrame) { + while (_currentFrame < (int)endFrame && !g_vm->shouldQuit()) { if (isNextFrame()) { renderFrame(); _currentFrame = _decoders[0]->getCurFrame(); @@ -378,12 +378,17 @@ void AVISurface::playCutscene(const Rect &r, uint startFrame, uint endFrame) { } else { g_vm->_screen->blitFrom(*_movieFrameSurface[0], Common::Point(r.left, r.top)); } + + g_vm->_screen->update(); + g_vm->_events->pollEvents(); } // Brief wait, and check at the same time for clicks to abort the clip if (g_vm->_events->waitForPress(10)) break; } + + stop(); } } // End of namespace Titanic diff --git a/engines/titanic/support/movie.cpp b/engines/titanic/support/movie.cpp index cfdcecbf42..647b24dda4 100644 --- a/engines/titanic/support/movie.cpp +++ b/engines/titanic/support/movie.cpp @@ -133,8 +133,13 @@ void OSMovie::playCutscene(const Rect &drawRect, uint startFrame, uint endFrame) drawRect.top + (heightLess ? CLIP_HEIGHT_REDUCED : CLIP_HEIGHT) ); + CGameState &gameState = g_vm->_window->_gameManager->_gameState; + gameState.setMode(GSMODE_CLIP); + _aviSurface.setFrame(startFrame); _aviSurface.playCutscene(r, startFrame, endFrame); + + gameState.setMode(GSMODE_INTERACTIVE); } void OSMovie::stop() { |