X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Fengine.py;h=4aac2e8e8bb7297ce86e317e4c8e68e5528f5212;hb=bb98345153a9111d9af5b3d24e6a00037b59b977;hp=eee88b761dcc168c07c1d8fe85731af1b00a7962;hpb=a47259a5c1ac305e37b70ab309946195275e2791;p=tabakrolletjie.git diff --git a/tabakrolletjie/engine.py b/tabakrolletjie/engine.py index eee88b7..4aac2e8 100644 --- a/tabakrolletjie/engine.py +++ b/tabakrolletjie/engine.py @@ -8,12 +8,21 @@ import pygame.time import pygame.locals as pgl from .constants import FPS +from .events import QuitEvent, SceneChangeEvent class Engine(object): - def __init__(self, screen, scene): + def __init__(self, screen, gamestate): self._screen = screen + self._gamestate = gamestate + self._scene = None + + def set_scene(self, scene): + if self._scene is not None: + self._scene.exit(self._gamestate) self._scene = scene + if scene is not None: + self._scene.enter(self._gamestate) def run(self): clock = pygame.time.Clock() @@ -21,12 +30,14 @@ 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: - pass # TODO: send to scene + self._scene.event(ev, self._gamestate) - # TODO: render scene + self._scene.render(self._screen, self._gamestate) pygame.display.flip() - clock.tick(FPS)