diff options
author | Marisa-Chan | 2013-10-31 07:45:43 +0000 |
---|---|---|
committer | Marisa-Chan | 2013-10-31 07:45:43 +0000 |
commit | b2aa30afebe9c799ad2513f6c22cd798c1818eb0 (patch) | |
tree | 105043ab1c3b489c1265cf4adda0f4be62147261 /engines/zvision/timer_node.cpp | |
parent | fa943f1044e78ad9b1305f2d91085c25a945aaa9 (diff) | |
download | scummvm-rg350-b2aa30afebe9c799ad2513f6c22cd798c1818eb0.tar.gz scummvm-rg350-b2aa30afebe9c799ad2513f6c22cd798c1818eb0.tar.bz2 scummvm-rg350-b2aa30afebe9c799ad2513f6c22cd798c1818eb0.zip |
ZVISION: Correct timer code to match original.
Diffstat (limited to 'engines/zvision/timer_node.cpp')
-rw-r--r-- | engines/zvision/timer_node.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/engines/zvision/timer_node.cpp b/engines/zvision/timer_node.cpp index c7cefd6150..f8da0bcf37 100644 --- a/engines/zvision/timer_node.cpp +++ b/engines/zvision/timer_node.cpp @@ -38,25 +38,34 @@ TimerNode::TimerNode(ZVision *engine, uint32 key, uint timeInSeconds) _timeLeft = timeInSeconds * 1000; else if (_engine->getGameId() == GID_GRANDINQUISITOR) _timeLeft = timeInSeconds * 100; - _engine->getScriptManager()->setStateValue(_key, 1); + + if (_key != StateKey_NotSet) + _engine->getScriptManager()->setStateValue(_key, 1); } TimerNode::~TimerNode() { - if (_timeLeft <= 0) + if (_key != StateKey_NotSet) _engine->getScriptManager()->setStateValue(_key, 2); - else - _engine->getScriptManager()->setStateValue(_key, _timeLeft); // If timer was stopped by stop or kill + int32 timeLeft = _timeLeft / (_engine->getGameId() == GID_NEMESIS ? 1000 : 100); + if (timeLeft > 0) + _engine->getScriptManager()->setStateValue(_key, timeLeft); // If timer was stopped by stop or kill } bool TimerNode::process(uint32 deltaTimeInMillis) { _timeLeft -= deltaTimeInMillis; if (_timeLeft <= 0) - return true; + return stop(); return false; } +bool TimerNode::stop() { + if (_key != StateKey_NotSet) + _engine->getScriptManager()->setStateValue(_key, 2); + return true; +} + void TimerNode::serialize(Common::WriteStream *stream) { stream->writeUint32LE(_key); stream->writeUint32LE(_timeLeft); |