"""Render a level and allow moving the scene"""
+import os
+
+from pygame.constants import BLEND_RGBA_MULT
from pgzero.constants import keys
-from .level import LevelScene
+from pgzero.loaders import images
+from .level import BaseLevelScene
+from .base import MoveViewportEvent
from ..constants import TILE_SIZE
-class ViewLevelScene(LevelScene):
+class ViewLevelScene(BaseLevelScene):
""" Level scene. """
- def __init__(self, level_name):
- super(ViewLevelScene, self).__init__(level_name)
- self._pos = (0, 0)
-
- def draw(self, screen):
- super(ViewLevelScene, self).draw(screen, self._pos)
+ def enter(self, world):
+ super().enter(world)
+ # Mark starting position
+ self._roach = images.load(os.path.join("roach/roach_1")).copy()
+ self._roach.fill((255, 0, 0, 255), None, BLEND_RGBA_MULT)
+ x = self._level.start_pos[0] * TILE_SIZE
+ y = self._level.start_pos[1] * TILE_SIZE
+ for layer in ['floor', 'tunnels']:
+ self._surfaces[layer].blit(self._roach, (x, y))
def on_key_down(self, key, mod, unicode):
+ offset = None
if key == keys.DOWN:
- self._pos = self._pos[0], self._pos[1] + TILE_SIZE
- return
+ offset = (0, TILE_SIZE)
elif key == keys.UP:
- self._pos = self._pos[0], self._pos[1] - TILE_SIZE
- return
+ offset = (0, -TILE_SIZE)
elif key == keys.LEFT:
- self._pos = self._pos[0] - TILE_SIZE, self._pos[1]
- return
+ offset = (-TILE_SIZE, 0)
elif key == keys.RIGHT:
- self._pos = self._pos[0] + TILE_SIZE, self._pos[1]
+ offset = (TILE_SIZE, 0)
+ elif key == keys.S:
+ if self._level_layer == 'floor':
+ self._level_layer = 'tunnels'
+ else:
+ self._level_layer = 'floor'
return
+ if offset:
+ return [MoveViewportEvent(offset)]
return super(ViewLevelScene, self).on_key_down(key, mod, unicode)