diff options
Diffstat (limited to 'engines/titanic/sound/sound.cpp')
-rw-r--r-- | engines/titanic/sound/sound.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/engines/titanic/sound/sound.cpp b/engines/titanic/sound/sound.cpp index 7e791c2ba5..6d27d1de49 100644 --- a/engines/titanic/sound/sound.cpp +++ b/engines/titanic/sound/sound.cpp @@ -87,14 +87,18 @@ void CSound::stopChannel(int channel) { } void CSound::checkSounds() { - for (CSoundItemList::iterator i = _sounds.begin(); i != _sounds.end(); ++i) { + for (CSoundItemList::iterator i = _sounds.begin(); i != _sounds.end(); ) { CSoundItem *soundItem = *i; + if (soundItem->_active && soundItem->_freeFlag) { if (_soundManager.isActive(soundItem->_waveFile)) { - _sounds.remove(soundItem); + i = _sounds.erase(i); delete soundItem; + continue; } } + + ++i; } } @@ -155,6 +159,9 @@ int CSound::playSound(const CString &name, CProximity &prox) { return -1; prox._field6C = waveFile->fn1(); + if (prox._soundType != Audio::Mixer::kPlainSoundType) + waveFile->_soundType = prox._soundType; + activateSound(waveFile, prox._freeSoundFlag); return _soundManager.playSound(*waveFile, prox); |