From ad36fb3366a68f6e49f00063371ca0ab6e02b929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20Andersson?= Date: Wed, 2 Jan 2013 22:18:09 +0100 Subject: [PATCH] TOLTECS: Don't allow dialog skipping while movies are playing --- engines/toltecs/movie.cpp | 4 +++- engines/toltecs/movie.h | 4 ++++ engines/toltecs/toltecs.cpp | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/engines/toltecs/movie.cpp b/engines/toltecs/movie.cpp index 35accb5d934..69303830f82 100644 --- a/engines/toltecs/movie.cpp +++ b/engines/toltecs/movie.cpp @@ -45,7 +45,7 @@ enum ChunkTypes { kChunkStopSubtitles = 8 }; -MoviePlayer::MoviePlayer(ToltecsEngine *vm) : _vm(vm) { +MoviePlayer::MoviePlayer(ToltecsEngine *vm) : _vm(vm), _isPlaying(false) { } MoviePlayer::~MoviePlayer() { @@ -62,6 +62,7 @@ void MoviePlayer::playMovie(uint resIndex) { int16 savedGuiHeight = _vm->_guiHeight; byte moviePalette[768]; + _isPlaying = true; _vm->_isSaveAllowed = false; memset(moviePalette, 0, sizeof(moviePalette)); @@ -200,6 +201,7 @@ void MoviePlayer::playMovie(uint resIndex) { _vm->_guiHeight = savedGuiHeight; _vm->_isSaveAllowed = true; + _isPlaying = false; } void MoviePlayer::fetchAudioChunks() { diff --git a/engines/toltecs/movie.h b/engines/toltecs/movie.h index 8fa48975d76..c1ed6d7ba01 100644 --- a/engines/toltecs/movie.h +++ b/engines/toltecs/movie.h @@ -37,11 +37,15 @@ public: void playMovie(uint resIndex); + bool isPlaying() { return _isPlaying; } + protected: ToltecsEngine *_vm; Audio::QueuingAudioStream *_audioStream; Audio::SoundHandle _audioStreamHandle; + bool _isPlaying; + uint32 _chunkCount, _frameCount, _lastPrefetchOfs; uint32 _soundChunkFramesLeft, _framesPerSoundChunk; diff --git a/engines/toltecs/toltecs.cpp b/engines/toltecs/toltecs.cpp index 6d8a5eb7828..86b2474d9da 100644 --- a/engines/toltecs/toltecs.cpp +++ b/engines/toltecs/toltecs.cpp @@ -340,7 +340,7 @@ void ToltecsEngine::updateInput() { break; case Common::KEYCODE_SPACE: // Skip current dialog line, if a dialog is active - if (_screen->getTalkTextDuration() > 0) { + if (!_moviePlayer->isPlaying() && _screen->getTalkTextDuration() > 0) { _sound->stopSpeech(); _screen->finishTalkTextItems(); _keyState.reset(); // event consumed