Merge branch 'master' of git+ssh://ctpug.org.za/naja
[naja.git] / naja / engine.py
1 import pygame
2 import pygame.locals as pgl
3
4 from naja.events import SceneChangeEvent, QuitGameEvent
5
6
7 class Engine(object):
8     def __init__(self, surface, scene):
9         self._surface = surface
10         self._scene = scene
11
12     def run(self):
13         while True:
14             for ev in pygame.event.get():
15                 if ev.type == pgl.QUIT or QuitGameEvent.matches(ev):
16                     self.quit_game()
17                     return
18                 elif SceneChangeEvent.matches(ev):
19                     self.change_scene(ev.scene)
20                 else:
21                     self._scene.handle_event(ev)
22             self._scene.render(self._surface)
23             pygame.display.flip()
24
25     def change_scene(self, scene):
26         self._scene.exit()
27         self._scene = scene
28         self._scene.enter()
29
30     def quit_game(self):
31         self._scene.exit()
32         self._scene = None