LAB: Fix waiting for sounds embedded in animations

A regression of 75d1385c8d
This commit is contained in:
Filippos Karapetis 2016-05-17 11:21:33 +03:00
parent 22e5fe8b4e
commit b2ec7acbf7
2 changed files with 8 additions and 9 deletions

View file

@ -208,6 +208,8 @@ void Anim::diffNextFrame(bool onlyDiffData) {
_vm->updateEvents();
_vm->waitTOF();
}
_waitForEffect = false;
}
_size -= 8;
@ -217,7 +219,9 @@ void Anim::diffNextFrame(bool onlyDiffData) {
_diffFile->skip(2);
// Sound effects embedded in animations are started here. These are
// usually animation-specific, like door opening sounds, and are not looped
// usually animation-specific, like door opening sounds, and are not looped.
// The engine should wait for all such sounds to end.
_waitForEffect = true;
_vm->_music->playSoundEffect(_sampleSpeed, _size, false, _diffFile);
break;
@ -233,6 +237,8 @@ void Anim::diffNextFrame(bool onlyDiffData) {
if (drawOnScreen)
didTOF = true;
}
_waitForEffect = false;
}
_isPlaying = false;

View file

@ -254,16 +254,9 @@ void LabEngine::doActions(const ActionList &actionList) {
_music->loadSoundEffect(action->_messages[0], true, false);
break;
case kActionShowDiff: {
bool curWait = _anim->_waitForEffect;
// Pause the engine until the sound is finished
_anim->_waitForEffect = true;
case kActionShowDiff:
_graphics->readPict(action->_messages[0], true);
// Restore the previous value of _waitForEffect
_anim->_waitForEffect = curWait;
break;
}
case kActionShowDiffLooping: // used in scene 44 (heart of the labyrinth, minotaur)
_graphics->readPict(action->_messages[0], false);