think of the poor windows users
[koperkapel.git] / koperkapel / scenes / viewlevel.py
1 """Render a level and allow moving the scene"""
2
3 from pygame.constants import BLEND_RGBA_MULT
4 from pgzero.constants import keys
5 from pgzero.loaders import images
6 from .level import BaseLevelScene
7 from .base import MoveViewportEvent
8 from ..constants import TILE_SIZE
9 from ..util import safepath
10
11
12 class ViewLevelScene(BaseLevelScene):
13     """ Level scene. """
14
15     def enter(self, world):
16         super().enter(world)
17         # Mark starting position
18         self._roach = images.load(safepath("roach/roach_1")).copy()
19         self._roach.fill((255, 0, 0, 255), None, BLEND_RGBA_MULT)
20         x = self._level.start_pos[0] * TILE_SIZE
21         y = self._level.start_pos[1] * TILE_SIZE
22         for layer in ['floor', 'tunnels']:
23             self._surfaces[layer].blit(self._roach, (x, y))
24
25     def on_key_down(self, key, mod, unicode):
26         offset = None
27         if key == keys.DOWN:
28             offset = (0, TILE_SIZE)
29         elif key == keys.UP:
30             offset = (0, -TILE_SIZE)
31         elif key == keys.LEFT:
32             offset = (-TILE_SIZE, 0)
33         elif key == keys.RIGHT:
34             offset = (TILE_SIZE, 0)
35         elif key == keys.S:
36             if self._level_layer == 'floor':
37                 self._level_layer = 'tunnels'
38             else:
39                 self._level_layer = 'floor'
40             return
41         if offset:
42             return [MoveViewportEvent(offset)]
43         return super(ViewLevelScene, self).on_key_down(key, mod, unicode)