From 9f7ae73a7b7318311e5cc52d36e451cacfba8a02 Mon Sep 17 00:00:00 2001 From: Evgeny Grechnikov Date: Sat, 20 Oct 2018 00:32:10 +0300 Subject: LASTEXPRESS: loud train noise when NPC exits car If Cath stands near the beginning or the end of a car, looks at a door, and a NPC opens this door, the volume of train noise is temporarily raised. Controlled by variables SoundManager::_data{0,1,2}, renamed to be not so mysterious. --- engines/lastexpress/sound/sound.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'engines/lastexpress/sound/sound.cpp') 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: -- cgit v1.2.3