aboutsummaryrefslogtreecommitdiff
path: root/engines/teenagent/teenagent.cpp
diff options
context:
space:
mode:
authorVladimir Menshakov2010-01-05 22:09:16 +0000
committerVladimir Menshakov2010-01-05 22:09:16 +0000
commit841e2d34242418ed0c86a6d8d3a4a97faa085ae6 (patch)
tree9c9f5d2a405f8ab0e1dbd343793028cec3bceae5 /engines/teenagent/teenagent.cpp
parente38b7b3cc53fe02312fcaee5e95c37dfa1c65c92 (diff)
downloadscummvm-rg350-841e2d34242418ed0c86a6d8d3a4a97faa085ae6.tar.gz
scummvm-rg350-841e2d34242418ed0c86a6d8d3a4a97faa085ae6.tar.bz2
scummvm-rg350-841e2d34242418ed0c86a6d8d3a4a97faa085ae6.zip
separate timers for mark, scene and messages.
svn-id: r47056
Diffstat (limited to 'engines/teenagent/teenagent.cpp')
-rw-r--r--engines/teenagent/teenagent.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp
index e20e974d5c..ac399b269c 100644
--- a/engines/teenagent/teenagent.cpp
+++ b/engines/teenagent/teenagent.cpp
@@ -518,18 +518,27 @@ Common::Error TeenAgentEngine::run() {
uint32 delta = new_timer - timer;
timer = new_timer;
- if (game_timer <= delta) {
- bool b = scene->render();
+ bool tick_game = game_timer <= delta;
+ if (tick_game)
+ game_timer = kGameDelay - ((delta - game_timer) % kGameDelay);
+ else
+ game_timer -= delta;
+
+ bool tick_mark = mark_timer <= delta;
+ if (tick_mark)
+ mark_timer = kMarkDelay - ((delta - mark_timer) % kMarkDelay);
+ else
+ mark_timer -= delta;
+
+ if (tick_game || tick_mark) {
+ bool b = scene->render(tick_game, tick_mark, delta);
if (!inventory->active() && !b && action != kActionNone) {
processObject();
action = kActionNone;
dst_object = NULL;
}
-
scene_busy = b;
- game_timer = kGameDelay - ((delta - game_timer) % kGameDelay);
- } else
- game_timer -= delta;
+ }
bool busy = inventory->active() || scene_busy;