X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fscenes%2Fmenu.py;h=e6b3f0a9c6d4e05f46d07ea8ef6bdfd8253ed7ee;hb=78daa43b6486e94b0531cacf6d7083cbaf3a827c;hp=39ab12c1ff1e1615edc25dc191ce007ff84f97c7;hpb=4398178d5515ab2f2056ceb80276f5c4db1809a6;p=koperkapel.git diff --git a/koperkapel/scenes/menu.py b/koperkapel/scenes/menu.py index 39ab12c..e6b3f0a 100644 --- a/koperkapel/scenes/menu.py +++ b/koperkapel/scenes/menu.py @@ -1,11 +1,11 @@ """ 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 ..util import safepath +from .base import Scene, ChangeSceneEvent, WorldEvent, QuitEvent class MenuScene(Scene): @@ -13,25 +13,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(safepath("splash/background")))) + + def _init_buttons(self): self._nav = ActorNavigator() - self._menu = [ - TextButton("Play", action=self.change_to_level), - 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 = (675, 275 + (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 change_to_level(self): - from .level import LevelScene - return [ChangeSceneEvent(LevelScene('level1'))] + def _build_button(self, name, action): + actor = SelectableSurfActor( + images.load(safepath("splash/%s" % (name,))), + images.load(safepath("splash/%s_selected" % (name,)))) + actor.action = action + return actor + + def change_to_resume(self): + from .level import GameLevelScene + return [ChangeSceneEvent(GameLevelScene())] + + def change_to_new_game(self): + from .level import GameLevelScene + return [ + WorldEvent("reset"), + ChangeSceneEvent(GameLevelScene()) + ] def change_to_credits(self): from .credits import CreditsScene @@ -48,6 +71,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