LAB: Fix waiting for sounds embedded in animations
A regression of 75d1385c8d
This commit is contained in:
parent
22e5fe8b4e
commit
b2ec7acbf7
2 changed files with 8 additions and 9 deletions
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue