X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Fscenes%2Fmenu.py;h=e87005491f9fd79867b1fbc30b5c9242f298a08c;hb=64b201d5de529398659af1022cabb985acd52ecc;hp=0492ae9e38c42083ef506d0f42d8b6e5dbcdafd8;hpb=3dd84f63b3435d92e08c39d6a46fb8179a7b43a2;p=tabakrolletjie.git diff --git a/tabakrolletjie/scenes/menu.py b/tabakrolletjie/scenes/menu.py index 0492ae9..e870054 100644 --- a/tabakrolletjie/scenes/menu.py +++ b/tabakrolletjie/scenes/menu.py @@ -6,6 +6,7 @@ from .base import BaseScene from ..events import QuitEvent, SceneChangeEvent from ..loader import loader from ..constants import FONTS +from ..widgets import TextButton class MenuScene(BaseScene): @@ -16,11 +17,11 @@ class MenuScene(BaseScene): font_title = loader.load_font(FONTS['bold'], size=32) self._title = font_title.render('A Game with a title', True, (255, 255, 255)) - font_menu = loader.load_font(FONTS['sans'], size=24) - self._menu = [ - font_menu.render("Load Level", True, (255, 255, 255)), - font_menu.render("Load Saved Game", True, (255, 255, 255)), - ] + self._menu = { + 'load level': TextButton("Load Level", (255, 255, 255)), + 'saved game': TextButton("Load Saved Game", (255, 255, 255)), + 'start game': TextButton("Start Game (Day)", (255, 255, 255)), + } def render(self, surface, gamestate): surface.fill((0, 128, 0)) @@ -29,10 +30,23 @@ class MenuScene(BaseScene): surface.blit(self._title, pos, None) height = 150 - for item in self._menu: - pos = ((surface.get_width() - item.get_width()) / 2, height) - surface.blit(item, pos, None) - height += 50 + for label in sorted(self._menu): + item = self._menu[label] + if not item.position: + item.position = ((surface.get_width() - item.get_width()) / 2, + height) + item.render(surface) + height += item.get_height() + 30 + + def _get_pressed(self, ev): + for label, button in self._menu.items(): + if button.pressed(ev): + return label + return None + + def _do_day(self): + from .day import DayScene + SceneChangeEvent.post(scene=DayScene()) def event(self, ev, gamestate): if ev.type == pgl.KEYDOWN: @@ -42,8 +56,16 @@ class MenuScene(BaseScene): from .night import NightScene SceneChangeEvent.post(scene=NightScene()) elif ev.key == pgl.K_d: - from .day import DayScene - SceneChangeEvent.post(scene=DayScene()) + self._do_day() elif ev.key == pgl.K_l: print "Loading Station Alpha ..." gamestate.load_station("station-alpha.json") + elif ev.type == pgl.MOUSEBUTTONDOWN: + pressed = self._get_pressed(ev) + if pressed == 'load level': + print "Loading Station Alpha ..." + gamestate.load_station("station-alpha.json") + elif pressed == 'start game': + self._do_day() + elif pressed: + print 'Pressed', pressed