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 | 
