X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fengine.py;h=2642feb3481de6407b63ebb02cd58b0a3691afd2;hb=a1c561e26fae79ce8a9570c9404975a8a0367d65;hp=d509ec20e2e914e958b172380c2f3842b8d6648c;hpb=4168e9307ee78634e1bf7e945ab661204a91d9a0;p=naja.git diff --git a/naja/engine.py b/naja/engine.py index d509ec2..2642feb 100644 --- a/naja/engine.py +++ b/naja/engine.py @@ -1,15 +1,41 @@ import pygame import pygame.locals as pgl +from naja.constants import FPS +from naja.events import SceneChangeEvent, QuitGameEvent, LoadGameEvent +from naja.sound import sound + class Engine(object): - def __init__(self, surface): + def __init__(self, surface, scene, state): self._surface = surface + self._scene = scene + self._state = state def run(self): + clock = pygame.time.Clock() while True: + self._surface.fill((0, 0, 0)) for ev in pygame.event.get(): - if ev.type == pgl.QUIT: + if ev.type == pgl.QUIT or QuitGameEvent.matches(ev): + self.quit_game() return - # TODO: work + elif SceneChangeEvent.matches(ev): + self.change_scene(ev.scene_cls) + elif LoadGameEvent.matches(ev): + self._state = ev.state + else: + self._scene.handle_event(ev) + self._scene.render(self._surface) pygame.display.flip() + clock.tick(FPS) + + def change_scene(self, scene_cls): + self._scene.exit() + self._scene = scene_cls(self._state) + self._scene.enter() + + def quit_game(self): + self._scene.exit() + sound.play_sound('shutdown.ogg', foreground=True) + self._scene = None