aboutsummaryrefslogtreecommitdiff
path: root/engines/teenagent/teenagent.cpp
diff options
context:
space:
mode:
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;