changeset 436:2b4cd86dfcaf

Better approximate constant framerate on move events, etc.
author Neil Muller <drnlmuller@gmail.com>
date Sat, 21 Nov 2009 17:47:27 +0000
parents 66bc99477155
children 95b81e917399
files gamelib/engine.py
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/engine.py	Sat Nov 21 17:41:21 2009 +0000
+++ b/gamelib/engine.py	Sat Nov 21 17:47:27 2009 +0000
@@ -248,6 +248,7 @@
         elif e.type is MOVE_FOX_ID:
             # ensure no timers trigger while we're running
             pygame.time.set_timer(MOVE_FOX_ID, 0)
+            cur_time = pygame.time.get_ticks()
             # Clear any queued timer events, so we don't full the queue
             pygame.event.clear(MOVE_FOX_ID)
             # Ensure any outstanding animitions get cleaned up
@@ -258,7 +259,11 @@
                 # All foxes are gone/safe, so dawn happens
                 return pygame.event.post(START_DAY)
             # Re-enable timers
-            pygame.time.set_timer(MOVE_FOX_ID, self.cycle_time)
+            diff = pygame.time.get_ticks() - cur_time
+            time_left = self.cycle_time - diff
+            if time_left < 0:
+                time_left = self.cycle_time
+            pygame.time.set_timer(MOVE_FOX_ID, time_left)
         elif e.type is not QUIT:
             self.game.main_app.event(e)