diff options
author | Paweł Kołodziejski | 2008-01-15 21:35:03 +0000 |
---|---|---|
committer | Paweł Kołodziejski | 2008-01-15 21:35:03 +0000 |
commit | 6bb2f4447240bf3fe5fa16a8945ecd60866f2625 (patch) | |
tree | 3de3886de535bf438e04473da9bef0999ea0daa0 /engines/scumm/imuse_digi/dimuse.cpp | |
parent | 8935c574d547903b0c8d760d406873a3d8a36228 (diff) | |
download | scummvm-rg350-6bb2f4447240bf3fe5fa16a8945ecd60866f2625.tar.gz scummvm-rg350-6bb2f4447240bf3fe5fa16a8945ecd60866f2625.tar.bz2 scummvm-rg350-6bb2f4447240bf3fe5fa16a8945ecd60866f2625.zip |
implement dimuse transition 12, not tested yet
svn-id: r30503
Diffstat (limited to 'engines/scumm/imuse_digi/dimuse.cpp')
-rw-r--r-- | engines/scumm/imuse_digi/dimuse.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/engines/scumm/imuse_digi/dimuse.cpp b/engines/scumm/imuse_digi/dimuse.cpp index 1874546259..98b85321d2 100644 --- a/engines/scumm/imuse_digi/dimuse.cpp +++ b/engines/scumm/imuse_digi/dimuse.cpp @@ -101,6 +101,7 @@ void IMuseDigital::resetState() { memset(_attributes, 0, sizeof(_attributes)); _nextSeqToPlay = 0; _stopingSequence = false; + _triggerUsed = false; } void IMuseDigital::saveOrLoad(Serializer *ser) { @@ -364,6 +365,24 @@ void IMuseDigital::switchToNextRegion(Track *track) { } ImuseDigiSndMgr::SoundDesc *soundDesc = track->soundDesc; + if (_triggerUsed && track->soundDesc->numMarkers) { + if (_sound->checkForTriggerByRegionAndMarker(soundDesc, track->curRegion, _triggerParams.marker)) { + debug(5, "trigger %s reached, switchToNextRegion(track:%d)", track->trackId, _triggerParams.marker); + debug(5, "exit current region, switchToNextRegion(track:%d)", track->trackId); + Track *fadeTrack = cloneToFadeOutTrack(track, _triggerParams.fadeOutDelay); + if (fadeTrack) { + fadeTrack->dataOffset = _sound->getRegionOffset(fadeTrack->soundDesc, fadeTrack->curRegion); + fadeTrack->regionOffset = 0; + debug(5, "switchToNextRegion-sound(%d) select region %d, curHookId: %d", fadeTrack->soundId, fadeTrack->curRegion, fadeTrack->curHookId); + fadeTrack->curHookId = 0; + } + flushTrack(track); + startMusic(_triggerParams.filename, _triggerParams.soundId, _triggerParams.hookId, _triggerParams.volume); + _triggerUsed = false; + return; + } + } + int jumpId = _sound->getJumpIdByRegionAndHookId(soundDesc, track->curRegion, track->curHookId); if (jumpId == -1) jumpId = _sound->getJumpIdByRegionAndHookId(soundDesc, track->curRegion, 0); |