3 from pgzero.constants import keys
4 from ..loaders.levelloader import levels
5 from .base import Scene, ChangeSceneEvent
6 from ..constants import TILE_SIZE, WIDTH, HEIGHT
9 class LevelScene(Scene):
12 def __init__(self, level_name):
13 self._level_data = levels.load(level_name)
14 self._tiles = self._level_data['tiles']
16 def draw(self, screen, viewport=(0, 0)):
18 for y, row in enumerate(self._tiles):
19 for x, tile in enumerate(row):
20 pos = (x * TILE_SIZE - viewport[0],
21 y * TILE_SIZE - viewport[1])
22 if 'image' not in tile:
23 # Skip broken tiles for now
25 if 0 <= pos[0] < WIDTH:
26 if 0 <= pos[1] < HEIGHT:
27 screen.blit(tile['image'], pos)
29 def on_key_down(self, key, mod, unicode):
30 if key == keys.ESCAPE:
31 from .menu import MenuScene
32 return [ChangeSceneEvent(MenuScene())]