X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fscenes%2Fmenu.py;h=b5d7815ebf36532bac8c50dd355a4a088917404e;hb=3a22af1a0404b9bbbf7523b9337b84f6587bb004;hp=c91c14213e99ae00226065d17129d96be90f1e55;hpb=597d0be4e0942ce456e4ba8850decec1af7d0b4b;p=koperkapel.git diff --git a/koperkapel/scenes/menu.py b/koperkapel/scenes/menu.py index c91c142..b5d7815 100644 --- a/koperkapel/scenes/menu.py +++ b/koperkapel/scenes/menu.py @@ -1,11 +1,10 @@ """ Main menu scene. """ from pgzero.constants import keys -from ..actors.buttons import TextButton +from pgzero.loaders import images from ..actors.navigator import ActorNavigator -from .base import Scene, ChangeSceneEvent, QuitEvent - - +from ..actors.orientatedsurf import OrientatedSurfActor, SelectableSurfActor +from .base import Scene, ChangeSceneEvent, WorldEvent, QuitEvent class MenuScene(Scene): @@ -13,31 +12,48 @@ class MenuScene(Scene): def __init__(self): super().__init__() - self._title = self.actors.add(TextButton("Main Menu")) - self._title.pos = (300, 200) + self.actors.add_layer("buttons", level=10) + self._init_bg() + self._init_buttons() + + def _init_bg(self): + self.actors.default.clear() + self.actors.default.add(OrientatedSurfActor( + images.load("splash/background"))) + + def _init_buttons(self): self._nav = ActorNavigator() - self._menu = [ - TextButton("Play", action=self.change_to_level), - TextButton("View Last Generated Level", - action=self.change_to_viewer), - TextButton("Credits", action=self.change_to_credits), - TextButton("Quit", action=self.quit), + menu = [ + self._build_button("new_game", action=self.change_to_new_game), + self._build_button("resume_game", action=self.change_to_resume), + self._build_button("credits", action=self.change_to_credits), + self._build_button("quit", action=self.quit), ] - for i, item in enumerate(self._menu): - item.pos = (300, 300 + (i * 100)) + for i, item in enumerate(menu): + item.pos = (300, 200 + (i * 100)) self.actors.add(item) self._nav.connect( - self._menu, [keys.DOWN, keys.RIGHT], [keys.UP, keys.LEFT], + menu, [keys.DOWN, keys.RIGHT], [keys.UP, keys.LEFT], wrap=True) - self._nav.current.select() + self._nav.current.selected = True + + def _build_button(self, name, action): + actor = SelectableSurfActor( + images.load("splash/%s" % (name,)), + images.load("splash/%s_selected" % (name,))) + actor.action = action + return actor - def change_to_level(self): - from .level import LevelScene - return [ChangeSceneEvent(LevelScene('level1'))] + def change_to_resume(self): + from .level import GameLevelScene + return [ChangeSceneEvent(GameLevelScene())] - def change_to_viewer(self): - from .viewlevel import ViewLevelScene - return [ChangeSceneEvent(ViewLevelScene('map'))] + def change_to_new_game(self): + from .level import GameLevelScene + return [ + WorldEvent("reset"), + ChangeSceneEvent(GameLevelScene()) + ] def change_to_credits(self): from .credits import CreditsScene @@ -54,6 +70,6 @@ class MenuScene(Scene): else: prev, current = self._nav.follow(key) if prev is not None: - prev.deselect() + prev.selected = False if current is not None: - current.select() + current.selected = True