aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/messages/bilge_dispensor_event.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/messages/bilge_dispensor_event.cpp')
-rw-r--r--engines/titanic/messages/bilge_dispensor_event.cpp26
1 files changed, 18 insertions, 8 deletions
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;
}