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.constants import FPS
5 from naja.events import SceneChangeEvent, QuitGameEvent
6
7
8 class Engine(object):
9     def __init__(self, surface, scene, state):
10         self._surface = surface
11         self._scene = scene
12         self._state = state
13
14     def run(self):
15         clock = pygame.time.Clock()
16         while True:
17             self._surface.fill((0, 0, 0))
18             for ev in pygame.event.get():
19                 if ev.type == pgl.QUIT or QuitGameEvent.matches(ev):
20                     self.quit_game()
21                     return
22                 elif SceneChangeEvent.matches(ev):
23                     self.change_scene(ev.scene)
24                 else:
25                     print(ev.type)
26                     self._scene.handle_event(ev)
27             self._scene.render(self._surface)
28             pygame.display.flip()
29             clock.tick(FPS)
30
31     def change_scene(self, scene):
32         self._scene.exit()
33         self._scene = scene
34         self._scene.enter()
35
36     def quit_game(self):
37         self._scene.exit()
38         self._scene = None