1 """ Main menu scene. """
3 from pgzero.constants import keys
4 from pgzero.loaders import images
5 from ..actors.navigator import ActorNavigator
6 from ..actors.orientatedsurf import OrientatedSurfActor, SelectableSurfActor
7 from .base import Scene, ChangeSceneEvent, WorldEvent, QuitEvent
10 class MenuScene(Scene):
11 """ Main menu scene. """
15 self.actors.add_layer("buttons", level=10)
20 self.actors.default.clear()
21 self.actors.default.add(OrientatedSurfActor(
22 images.load("splash/background")))
24 def _init_buttons(self):
25 self._nav = ActorNavigator()
27 self._build_button("new_game", action=self.change_to_new_game),
28 self._build_button("resume_game", action=self.change_to_resume),
29 self._build_button("credits", action=self.change_to_credits),
30 self._build_button("quit", action=self.quit),
32 for i, item in enumerate(menu):
33 item.pos = (300, 200 + (i * 100))
36 menu, [keys.DOWN, keys.RIGHT], [keys.UP, keys.LEFT],
38 self._nav.current.selected = True
40 def _build_button(self, name, action):
41 actor = SelectableSurfActor(
42 images.load("splash/%s" % (name,)),
43 images.load("splash/%s_selected" % (name,)))
47 def change_to_resume(self):
48 from .level import GameLevelScene
49 return [ChangeSceneEvent(GameLevelScene())]
51 def change_to_new_game(self):
52 from .level import GameLevelScene
55 ChangeSceneEvent(GameLevelScene())
58 def change_to_credits(self):
59 from .credits import CreditsScene
60 return [ChangeSceneEvent(CreditsScene())]
65 def on_key_down(self, key, mod, unicode):
66 if key == keys.RETURN:
67 current = self._nav.current
68 if current is not None:
69 return current.action()
71 prev, current = self._nav.follow(key)
74 if current is not None:
75 current.selected = True