diff options
-rw-r--r-- | engines/zvision/timer_node.cpp | 20 | ||||
-rw-r--r-- | engines/zvision/timer_node.h | 1 |
2 files changed, 18 insertions, 3 deletions
diff --git a/engines/zvision/timer_node.cpp b/engines/zvision/timer_node.cpp index 55dfa51dfe..b529a661cf 100644 --- a/engines/zvision/timer_node.cpp +++ b/engines/zvision/timer_node.cpp @@ -31,16 +31,30 @@ namespace ZVision { + +TimerNode::TimerNode(ZVision *engine, uint32 key, uint timeInSeconds) + : Control(engine, key) { + if (_engine->getGameId() == GID_NEMESIS) { + _timeLeft = timeInSeconds * 1000; + } else if (_engine->getGameId() == GID_GRANDINQUISITOR) { + _timeLeft = timeInSeconds * 100; + } + + _engine->getScriptManager()->setStateValue(_key, 1); +} -TimerNode::TimerNode(ZVision *engine, uint32 key, uint timeInSeconds) - : Control(engine, key), _timeLeft(timeInSeconds * 1000) { +TimerNode::~TimerNode() { + if (_timeLeft <= 0) + _engine->getScriptManager()->setStateValue(_key, 2); + else + _engine->getScriptManager()->setStateValue(_key, _timeLeft); // If timer was stopped by stop or kill } bool TimerNode::process(uint32 deltaTimeInMillis) { _timeLeft -= deltaTimeInMillis; if (_timeLeft <= 0) { - _engine->getScriptManager()->setStateValue(_key, 0); + // Let the destructor reset the state value return true; } diff --git a/engines/zvision/timer_node.h b/engines/zvision/timer_node.h index 32dca71548..a95373353b 100644 --- a/engines/zvision/timer_node.h +++ b/engines/zvision/timer_node.h @@ -32,6 +32,7 @@ class ZVision; class TimerNode : public Control { public: TimerNode(ZVision *engine, uint32 key, uint timeInSeconds); + ~TimerNode(); /** * Decrement the timer by the delta time. If the timer is finished, set the status |