X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fscenes%2Fviewlevel.py;h=f6c56b66861b140ce95c86c8164d6e76da41e16e;hb=83d8e7e18486e1f2adcad2b1cd24a8b490876014;hp=8a101df27e1a815d6bca2b9ece97775b2d6a6306;hpb=86092c002ef88ab0eb450cc7d16c2437f7861729;p=koperkapel.git diff --git a/koperkapel/scenes/viewlevel.py b/koperkapel/scenes/viewlevel.py index 8a101df..f6c56b6 100644 --- a/koperkapel/scenes/viewlevel.py +++ b/koperkapel/scenes/viewlevel.py @@ -1,31 +1,44 @@ """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)