# HG changeset patch # User Neil Muller # Date 1258825647 0 # Node ID 2b4cd86dfcaf418eb1a7c04cad83eb0e8f8dd086 # Parent 66bc9947715513c276b74abacd5a954adba4eef1 Better approximate constant framerate on move events, etc. diff -r 66bc99477155 -r 2b4cd86dfcaf gamelib/engine.py --- 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)