1 """ Main menu scene. """
3 from pgzero.constants import keys
4 from ..actors.buttons import TextButton
5 from ..actors.navigator import ActorNavigator
6 from .base import Scene, ChangeSceneEvent, QuitEvent
11 class MenuScene(Scene):
12 """ Main menu scene. """
16 self._title = self.actors.add(TextButton("Main Menu"))
17 self._title.pos = (300, 200)
18 self._nav = ActorNavigator()
20 TextButton("Play", action=self.change_to_level),
21 TextButton("View Last Generated Level",
22 action=self.change_to_viewer),
23 TextButton("Manage Roaches", action=self.change_to_roaches),
24 TextButton("Credits", action=self.change_to_credits),
25 TextButton("Quit", action=self.quit),
27 for i, item in enumerate(self._menu):
28 item.pos = (300, 300 + (i * 100))
31 self._menu, [keys.DOWN, keys.RIGHT], [keys.UP, keys.LEFT],
33 self._nav.current.select()
35 def change_to_level(self):
36 from .level import LevelScene
37 return [ChangeSceneEvent(LevelScene('level1'))]
39 def change_to_viewer(self):
40 from .viewlevel import ViewLevelScene
41 return [ChangeSceneEvent(ViewLevelScene('map'))]
43 def change_to_roaches(self):
44 from .roaches import RoachesScene
45 return [ChangeSceneEvent(RoachesScene())]
47 def change_to_credits(self):
48 from .credits import CreditsScene
49 return [ChangeSceneEvent(CreditsScene())]
54 def on_key_down(self, key, mod, unicode):
55 if key == keys.RETURN:
56 current = self._nav.current
57 if current is not None:
58 return current.action()
60 prev, current = self._nav.follow(key)
63 if current is not None: