X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Fengine.py;h=4dac1ddb5273fa09c4208e6e1389d513a3dcabbd;hb=122d9fef6f8261a7e45026e3498ce95569b4d344;hp=8ee5fc96a43c5a8746c62fa653893a5d9ca34c15;hpb=fc5270a33b3765154fb1e737414197e278eb1e52;p=tabakrolletjie.git diff --git a/tabakrolletjie/engine.py b/tabakrolletjie/engine.py index 8ee5fc9..4dac1dd 100644 --- a/tabakrolletjie/engine.py +++ b/tabakrolletjie/engine.py @@ -8,6 +8,7 @@ import pygame.time import pygame.locals as pgl from .constants import FPS +from .events import QuitEvent, SceneChangeEvent class Engine(object): @@ -20,7 +21,8 @@ class Engine(object): if self._scene is not None: self._scene.exit(self._gamestate) self._scene = scene - self._scene.enter(self._gamestate) + if scene is not None: + self._scene.enter(self._gamestate) def run(self): clock = pygame.time.Clock() @@ -28,12 +30,17 @@ class Engine(object): while True: events = pygame.event.get() for ev in events: - if ev.type == pgl.QUIT: + if QuitEvent.matches(ev) or ev.type == pgl.QUIT: + self.set_scene(None) return + elif SceneChangeEvent.matches(ev): + self.set_scene(ev.scene) else: self._scene.event(ev, self._gamestate) + # Advance time on the world + # Time is assumed to flow perfectly, so no dt parameter for now + self._scene.tick(self._gamestate) self._scene.render(self._screen, self._gamestate) pygame.display.flip() - clock.tick(FPS)