aboutsummaryrefslogtreecommitdiff
path: root/engines/lastexpress/sound/sound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lastexpress/sound/sound.cpp')
-rw-r--r--engines/lastexpress/sound/sound.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/engines/lastexpress/sound/sound.cpp b/engines/lastexpress/sound/sound.cpp
index c28b734129..597edd3b11 100644
--- a/engines/lastexpress/sound/sound.cpp
+++ b/engines/lastexpress/sound/sound.cpp
@@ -119,10 +119,8 @@ SoundManager::SoundManager(LastExpressEngine *engine) : _engine(engine) {
memset(&_lastWarning, 0, sizeof(_lastWarning));
- // Initialize unknown data
- _data0 = 0;
- _data1 = 0;
- _data2 = 0;
+ _ambientVolumeChangeTimeMS = _ambientVolumeChangeDelayMS = 0;
+ _ambientScheduledVolume = kVolumeNone;
}
SoundManager::~SoundManager() {
@@ -181,6 +179,10 @@ bool SoundManager::playSoundWithSubtitles(Common::String filename, uint32 flag,
return (entry->getTag() != kSoundTagNone);
}
+bool SoundManager::needToChangeAmbientVolume() {
+ return _ambientScheduledVolume && _engine->_system->getMillis() - _ambientVolumeChangeTimeMS >= _ambientVolumeChangeDelayMS;
+}
+
void SoundManager::playSoundEvent(EntityIndex entity, byte action, byte activateDelay) {
int values[5];
@@ -195,18 +197,20 @@ void SoundManager::playSoundEvent(EntityIndex entity, byte action, byte activate
switch (action) {
case 36: {
- int _param3 = (flag <= 9) ? flag + 7 : 16;
+ uint newVolume = (flag <= kVolumeFull - 7) ? flag + 7 : kVolumeFull;
- if (_param3 > 7) {
- _data0 = (uint)_param3;
- _data1 = _data2 + 2 * activateDelay;
+ if (newVolume > kVolume7) {
+ _ambientScheduledVolume = (SoundFlag)newVolume;
+ _ambientVolumeChangeTimeMS = _engine->_system->getMillis();
+ _ambientVolumeChangeDelayMS = activateDelay * 1000 / 15;
}
break;
}
case 37:
- _data0 = 7;
- _data1 = _data2 + 2 * activateDelay;
+ _ambientScheduledVolume = kVolume7;
+ _ambientVolumeChangeTimeMS = _engine->_system->getMillis();
+ _ambientVolumeChangeDelayMS = activateDelay * 1000 / 15;
break;
case 150: