diff options
| -rw-r--r-- | engines/lastexpress/sound/queue.cpp | 6 | ||||
| -rw-r--r-- | engines/lastexpress/sound/sound.cpp | 24 | ||||
| -rw-r--r-- | engines/lastexpress/sound/sound.h | 16 | 
3 files changed, 23 insertions, 23 deletions
| diff --git a/engines/lastexpress/sound/queue.cpp b/engines/lastexpress/sound/queue.cpp index 51073839d1..3a10a7a89b 100644 --- a/engines/lastexpress/sound/queue.cpp +++ b/engines/lastexpress/sound/queue.cpp @@ -86,9 +86,9 @@ void SoundQueue::updateQueue() {  		if (!entry || getFlags()->flag_3 || (entry && entry->getTime() > getSound()->getAmbientSoundDuration())) {  			getSound()->playAmbientSound(0x45);  		} else { -			if (getSound()->getData1() && getSound()->getData2() >= getSound()->getData1()) { -				entry->setVolumeSmoothly((SoundFlag)getSound()->getData0()); -				getSound()->setData1(0); +			if (getSound()->needToChangeAmbientVolume()) { +				entry->setVolumeSmoothly(getSound()->getChangedAmbientVolume()); +				getSound()->clearAmbientVolumeChange();  			}  		}  	} 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: diff --git a/engines/lastexpress/sound/sound.h b/engines/lastexpress/sound/sound.h index f832574ba5..e4ffbd95e2 100644 --- a/engines/lastexpress/sound/sound.h +++ b/engines/lastexpress/sound/sound.h @@ -65,13 +65,12 @@ public:  	// Accessors  	SoundQueue *getQueue() { return _queue; } -	uint32 getData0() { return _data0; } -	int32 getData1() { return _data1; } -	int32 getData2() { return _data2; }  	uint32 getAmbientSoundDuration() { return _ambientSoundDuration; } +	bool needToChangeAmbientVolume(); +	SoundFlag getChangedAmbientVolume() { return _ambientScheduledVolume; }  	// Setters -	void setData1(int32 data) { _data1 = data; } +	void clearAmbientVolumeChange() { _ambientScheduledVolume = kVolumeNone; }  private:  	LastExpressEngine *_engine; @@ -80,13 +79,10 @@ private:  	// Compartment warnings by Mertens or Coudert  	uint32 _lastWarning[12]; -	// Looping sound +	// Ambient sound  	int _ambientSoundDuration; - -	// Unknown data -	uint32 _data0; -	int32 _data1; -	int32 _data2; +	uint32 _ambientVolumeChangeTimeMS, _ambientVolumeChangeDelayMS; +	SoundFlag _ambientScheduledVolume;  };  } // End of namespace LastExpress | 
