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->updateEvents();
|
||||||
_vm->waitTOF();
|
_vm->waitTOF();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_waitForEffect = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_size -= 8;
|
_size -= 8;
|
||||||
|
@ -217,7 +219,9 @@ void Anim::diffNextFrame(bool onlyDiffData) {
|
||||||
_diffFile->skip(2);
|
_diffFile->skip(2);
|
||||||
|
|
||||||
// Sound effects embedded in animations are started here. These are
|
// 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);
|
_vm->_music->playSoundEffect(_sampleSpeed, _size, false, _diffFile);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -233,6 +237,8 @@ void Anim::diffNextFrame(bool onlyDiffData) {
|
||||||
if (drawOnScreen)
|
if (drawOnScreen)
|
||||||
didTOF = true;
|
didTOF = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_waitForEffect = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_isPlaying = false;
|
_isPlaying = false;
|
||||||
|
|
|
@ -254,16 +254,9 @@ void LabEngine::doActions(const ActionList &actionList) {
|
||||||
_music->loadSoundEffect(action->_messages[0], true, false);
|
_music->loadSoundEffect(action->_messages[0], true, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kActionShowDiff: {
|
case kActionShowDiff:
|
||||||
bool curWait = _anim->_waitForEffect;
|
|
||||||
// Pause the engine until the sound is finished
|
|
||||||
_anim->_waitForEffect = true;
|
|
||||||
_graphics->readPict(action->_messages[0], true);
|
_graphics->readPict(action->_messages[0], true);
|
||||||
|
|
||||||
// Restore the previous value of _waitForEffect
|
|
||||||
_anim->_waitForEffect = curWait;
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
case kActionShowDiffLooping: // used in scene 44 (heart of the labyrinth, minotaur)
|
case kActionShowDiffLooping: // used in scene 44 (heart of the labyrinth, minotaur)
|
||||||
_graphics->readPict(action->_messages[0], false);
|
_graphics->readPict(action->_messages[0], false);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue