diff options
| -rw-r--r-- | engines/titanic/messages/auto_sound_event.cpp | 14 | ||||
| -rw-r--r-- | engines/titanic/messages/auto_sound_event.h | 4 | ||||
| -rw-r--r-- | engines/titanic/messages/bilge_dispensor_event.cpp | 26 | ||||
| -rw-r--r-- | engines/titanic/messages/bilge_dispensor_event.h | 5 | 
4 files changed, 31 insertions, 18 deletions
| diff --git a/engines/titanic/messages/auto_sound_event.cpp b/engines/titanic/messages/auto_sound_event.cpp index bc2cd7d074..942a85ec99 100644 --- a/engines/titanic/messages/auto_sound_event.cpp +++ b/engines/titanic/messages/auto_sound_event.cpp @@ -28,28 +28,28 @@ BEGIN_MESSAGE_MAP(CAutoSoundEvent, CGameObject)  	ON_MESSAGE(FrameMsg)  END_MESSAGE_MAP() -CAutoSoundEvent::CAutoSoundEvent() : CGameObject(), _value1(0), _value2(0xFFFFFF) { +CAutoSoundEvent::CAutoSoundEvent() : CGameObject(), _counter(0), _mask(0xFFFFFF) {  }  void CAutoSoundEvent::save(SimpleFile *file, int indent) {  	file->writeNumberLine(1, indent); -	file->writeNumberLine(_value1, indent); -	file->writeNumberLine(_value2, indent); +	file->writeNumberLine(_counter, indent); +	file->writeNumberLine(_mask, indent);  	CGameObject::save(file, indent);  }  void CAutoSoundEvent::load(SimpleFile *file) {  	file->readNumber(); -	_value1 = file->readNumber(); -	_value2  = file->readNumber(); +	_counter = file->readNumber(); +	_mask  = file->readNumber();  	CGameObject::load(file);  }  bool CAutoSoundEvent::FrameMsg(CFrameMsg *msg) { -	if (_value1 >= 0) -		_value1 = (_value1 + 1) & _value2; +	if (_counter >= 0) +		_counter = (_counter + 1) & _mask;  	return true;  } diff --git a/engines/titanic/messages/auto_sound_event.h b/engines/titanic/messages/auto_sound_event.h index d88976708e..085e6242cc 100644 --- a/engines/titanic/messages/auto_sound_event.h +++ b/engines/titanic/messages/auto_sound_event.h @@ -31,8 +31,8 @@ class CAutoSoundEvent : public CGameObject {  	DECLARE_MESSAGE_MAP;  	bool FrameMsg(CFrameMsg *msg);  public: -	int _value1; -	int _value2; +	int _counter; +	int _mask;  public:  	CLASSDEF;  	CAutoSoundEvent(); diff --git a/engines/titanic/messages/bilge_dispensor_event.cpp b/engines/titanic/messages/bilge_dispensor_event.cpp index 584da00a6f..336a1caf0d 100644 --- a/engines/titanic/messages/bilge_dispensor_event.cpp +++ b/engines/titanic/messages/bilge_dispensor_event.cpp @@ -21,6 +21,7 @@   */  #include "titanic/messages/bilge_dispensor_event.h" +#include "titanic/titanic.h"  namespace Titanic { @@ -42,22 +43,31 @@ void CBilgeDispensorEvent::load(SimpleFile *file) {  }  bool CBilgeDispensorEvent::EnterRoomMsg(CEnterRoomMsg *msg) { -	_value1 = 0; +	_counter = 0; +	_ticksDelayEnd = 0; +	_soundHandle = -1;  	return true;  }  bool CBilgeDispensorEvent::LeaveRoomMsg(CLeaveRoomMsg *msg) { -	_value1 = -1; +	_counter = -1;  	return true;  }  bool CBilgeDispensorEvent::FrameMsg(CFrameMsg *msg) { -	if (_value1 >= 0 && (_value1 & 0xffff) == 0x4000) { -		int volume = 20 + getRandomNumber(30); -		int val3 = getRandomNumber(20) - 10; +	uint32 ticks = g_vm->_events->getTicksCount(); + +	if ((_ticksDelayEnd && ticks >= _ticksDelayEnd) || +			_soundHandle == -1 || !isSoundActive(_soundHandle)) { +		_soundHandle = -1; +		_ticksDelayEnd = 0;  		if (getRandomNumber(2) == 0) { -			playSound("b#18.wav", volume, val3); +			int volume = 20 + getRandomNumber(30); +			int balance = getRandomNumber(20) - 10; +			_soundHandle = playSound("b#18.wav", volume, balance); +		} else { +			_ticksDelayEnd = ticks + 1000;  		}  	} @@ -67,9 +77,9 @@ bool CBilgeDispensorEvent::FrameMsg(CFrameMsg *msg) {  bool CBilgeDispensorEvent::StatusChangeMsg(CStatusChangeMsg *msg) {  	if (msg->_newStatus == 1) -		_value1 = -1; +		_counter = -1;  	else if (msg->_newStatus == 2) -		_value1 = 0; +		_counter = 0;  	return true;  } diff --git a/engines/titanic/messages/bilge_dispensor_event.h b/engines/titanic/messages/bilge_dispensor_event.h index 61d3116db4..64e0f30b53 100644 --- a/engines/titanic/messages/bilge_dispensor_event.h +++ b/engines/titanic/messages/bilge_dispensor_event.h @@ -34,9 +34,12 @@ class CBilgeDispensorEvent : public CAutoSoundEvent {  	bool LeaveRoomMsg(CLeaveRoomMsg *msg);  	bool FrameMsg(CFrameMsg *msg);  	bool StatusChangeMsg(CStatusChangeMsg *msg); +private: +	uint _ticksDelayEnd; +	int _soundHandle;  public:  	CLASSDEF; -	CBilgeDispensorEvent() : CAutoSoundEvent() {} +	CBilgeDispensorEvent() : CAutoSoundEvent(), _ticksDelayEnd(0), _soundHandle(-1) {}  	/**  	 * Save the data for the class to file | 
