diff options
author | Sin Nombre <sin@ubuntu.(none)> | 2010-05-28 20:45:29 (GMT) |
---|---|---|
committer | Sin Nombre <sin@ubuntu.(none)> | 2010-05-28 20:45:29 (GMT) |
commit | 9e93d1b9802385900b6f833f81f84c0ac50f91ef (patch) | |
tree | f2c16599bde31b31e5d44bae4a87e7e4093f3cab /pgu/timer.py | |
parent | ac8cbb6691ba3de1c7c42f4362edbe11270f4506 (diff) |
Diffstat (limited to 'pgu/timer.py')
-rw-r--r-- | pgu/timer.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/pgu/timer.py b/pgu/timer.py new file mode 100644 index 0000000..1201b7a --- /dev/null +++ b/pgu/timer.py @@ -0,0 +1,68 @@ +"""A timer for games with set-rate FPS. +""" + +import pygame + +class Timer: + """A timer for games with set-rate FPS. + + <pre>Timer(fps)</pre> + """ + + def __init__(self,fps): + if fps == 0: + self.tick = self._blank + return + self.wait = 1000/fps + self.nt = pygame.time.get_ticks() + pygame.time.wait(0) + + def _blank(self): + pass + + def tick(self): + """Wait correct amount of time each frame. Call this once per frame. + + <pre>Timer.tick()</pre> + """ + self.ct = pygame.time.get_ticks() + if self.ct < self.nt: + pygame.time.wait(self.nt-self.ct) + self.nt+=self.wait + else: + self.nt = pygame.time.get_ticks()+self.wait + + +class Speedometer: + """A timer replacement that returns out FPS once a second. + <pre>Speedometer()</pre> + + <strong>Attributes</strong> + <dl> + <dt>fps <dd>always set to the current FPS + </dl> + """ + def __init__(self): + self.frames = 0 + self.st = pygame.time.get_ticks() + self.fps = 0 + + def tick(self): + """ Call this once per frame. + + <pre>Speedometer.tick()</pre> + """ + r = None + self.frames += 1 + self.ct = pygame.time.get_ticks() + if (self.ct - self.st) >= 1000: + r = self.fps = self.frames + #print "%s: %d fps"%(self.__class__.__name__,self.fps) + self.frames = 0 + self.st += 1000 + pygame.time.wait(0) #NOTE: not sure why, but you gotta call this now and again + return r + + + +# vim: set filetype=python sts=4 sw=4 noet si : |