Limit frame rate
[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):
10         self._surface = surface
11         self._scene = scene
12
13     def run(self):
14         clock = pygame.time.Clock()
15         while True:
16             for ev in pygame.event.get():
17                 if ev.type == pgl.QUIT or QuitGameEvent.matches(ev):
18                     self.quit_game()
19                     return
20                 elif SceneChangeEvent.matches(ev):
21                     self.change_scene(ev.scene)
22                 else:
23                     self._scene.handle_event(ev)
24             self._scene.render(self._surface)
25             pygame.display.flip()
26             clock.tick(FPS)
27
28     def change_scene(self, scene):
29         self._scene.exit()
30         self._scene = scene
31         self._scene.enter()
32
33     def quit_game(self):
34         self._scene.exit()
35         self._scene = None