Mercurial > rinkhals
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)