X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Fscenes%2Fload_level.py;h=7f3223fefd7139eac18053cdc720deb5c83f8e17;hb=81237ce63dc2e193dc5055dc3d997a0c191a3b7e;hp=7b3478918209e3042a3eeb8fb3ed5b4cdd7cca7f;hpb=428f0c89073e5518f563a86c8bd42f6073af0007;p=tabakrolletjie.git diff --git a/tabakrolletjie/scenes/load_level.py b/tabakrolletjie/scenes/load_level.py index 7b34789..7f3223f 100644 --- a/tabakrolletjie/scenes/load_level.py +++ b/tabakrolletjie/scenes/load_level.py @@ -5,6 +5,7 @@ import os import pygame.locals as pgl from .base import BaseScene +from ..constants import SCREEN_SIZE from ..events import SceneChangeEvent from ..widgets import TextButton from ..loader import loader @@ -14,52 +15,50 @@ class LoadLevelScene(BaseScene): def _list_stations(self): station_path = loader.full_path("stations") - files = os.listdir(station_path) - result = [] - for f in files: - name, ext = os.path.splitext(f) - if ext == '.json': - result.append((name, f)) - result.sort() - return result + files = [f for f in os.listdir(station_path) if f.endswith(".json")] + files.sort() + return [loader.load_station(f) for f in files] def enter(self, gamestate): """Construct list of stations""" - height = 50 + width = SCREEN_SIZE[0] / 2 + self._title = TextButton( + 'Select a planet:', (255, 255, 255), pos=(width, 75), + size=32, font='bold', centre=True) + height = 150 self._buttons = [] - width = 30 - for station, filename in self._list_stations(): + for station in self._list_stations(): + title = station["config"]["name"] pos = (width, height) - button = TextButton(station, (255, 255, 255), filename, pos) - if width < 400: - width += 350 - else: - width = 30 - height += button.get_height() + 20 + button = TextButton(title, (255, 255, 255), pos=pos, centre=True) + button.station = station + height += button.get_height() + 20 self._buttons.append(button) def render(self, surface, gamestate): surface.fill((0, 128, 128)) + self._title.render(surface) for button in self._buttons: button.render(surface) def _get_pressed(self, ev): for button in self._buttons: if button.pressed(ev): - return button.name + return button return None - def _do_load(self, name, gamestate): + def _do_load(self, station, gamestate): from .day import DayScene - print "Loading station", name - gamestate.load_station(name) + print "Loading station", station["config"]["name"] + gamestate.set_station(station) SceneChangeEvent.post(scene=DayScene()) def event(self, ev, gamestate): if ev.type == pgl.KEYDOWN: - if ev.key == pgl.K_l: - self._do_load("station_alpha.json", gamestate) + if ev.key in (pgl.K_q, pgl.K_ESCAPE): + from .menu import MenuScene + SceneChangeEvent.post(scene=MenuScene()) elif ev.type == pgl.MOUSEBUTTONDOWN: pressed = self._get_pressed(ev) if pressed: - self._do_load(pressed, gamestate) + self._do_load(pressed.station, gamestate)