Merge branch 'master' of ctpug.org.za:tabakrolletjie
[tabakrolletjie.git] / tabakrolletjie / engine.py
1 """ Engine for moving controll scenes and tranistions between them.
2 """
3
4 import pygame.display
5 import pygame.event
6 import pygame.time
7
8 import pygame.locals as pgl
9
10 from .constants import FPS
11
12
13 class Engine(object):
14     def __init__(self, screen, gamestate):
15         self._screen = screen
16         self._gamestate = gamestate
17         self._scene = None
18
19     def set_scene(self, scene):
20         if self._scene is not None:
21             self._scene.exit(self._gamestate)
22         self._scene = scene
23         self._scene.enter(self._gamestate)
24
25     def run(self):
26         clock = pygame.time.Clock()
27
28         while True:
29             events = pygame.event.get()
30             for ev in events:
31                 if ev.type == pgl.QUIT:
32                     return
33                 else:
34                     self._scene.event(ev, self._gamestate)
35
36             self._scene.render(self._screen, self._gamestate)
37             pygame.display.flip()
38
39             clock.tick(FPS)