aboutsummaryrefslogtreecommitdiff
path: root/engines/avalanche/timer.cpp
diff options
context:
space:
mode:
authorurukgit2013-11-19 18:25:44 +0100
committerurukgit2013-11-19 18:25:51 +0100
commit27d302cdb16c9c94b1613752316a5fa09f811d63 (patch)
tree1ff40737e8ac0c432a0ecbabb1879bf9db38c0a5 /engines/avalanche/timer.cpp
parent03e7fd3941204b10b74d92d3724899e8529775f1 (diff)
downloadscummvm-rg350-27d302cdb16c9c94b1613752316a5fa09f811d63.tar.gz
scummvm-rg350-27d302cdb16c9c94b1613752316a5fa09f811d63.tar.bz2
scummvm-rg350-27d302cdb16c9c94b1613752316a5fa09f811d63.zip
AVALANCHE: Fix timer.
Diffstat (limited to 'engines/avalanche/timer.cpp')
-rw-r--r--engines/avalanche/timer.cpp28
1 files changed, 13 insertions, 15 deletions
diff --git a/engines/avalanche/timer.cpp b/engines/avalanche/timer.cpp
index 93889b76b7..8a4aa1c055 100644
--- a/engines/avalanche/timer.cpp
+++ b/engines/avalanche/timer.cpp
@@ -43,22 +43,20 @@ Timer::Timer(AvalancheEngine *vm) {
* @remarks Originally called 'set_up_timer'
*/
void Timer::addTimer(int32 duration, byte action, byte reason) {
- if (_vm->_ableToAddTimer) {
- byte i = 0;
- while ((i < 7) && (_times[i]._timeLeft != 0))
- i++;
-
- if (i == 7)
- return; // Oh dear... No timer left
-
- // Everything's OK here!
- _times[i]._timeLeft = duration;
- _times[i]._action = action;
- _times[i]._reason = reason;
- } else {
- _vm->_ableToAddTimer = true;
- return;
+ byte i = 0;
+ while ((i < 7) && (_times[i]._timeLeft != 0)) {
+ if (_times[i]._reason == reason) // We only add a timer if it's not already in the array.
+ return;
+ i++;
}
+
+ if (i == 7)
+ return; // Oh dear... No timer left
+
+ // Everything's OK here!
+ _times[i]._timeLeft = duration;
+ _times[i]._action = action;
+ _times[i]._reason = reason;
}
/**