changeset 158:6a866d4710e3

Level chooser scene
author Stefano Rivera <stefano@rivera.za.net>
date Tue, 13 Sep 2011 22:47:26 +0200
parents 31881bf8ddda
children 40d2d913bcde
files mamba/habitats/levelmenu.py mamba/habitats/mainmenu.py
diffstat 2 files changed, 46 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mamba/habitats/levelmenu.py	Tue Sep 13 22:47:26 2011 +0200
@@ -0,0 +1,39 @@
+"""Level menu."""
+
+from pygame.locals import KEYDOWN
+
+from mamba.constants import ESCAPE_KEYS
+from mamba.engine import Habitat, NewHabitatEvent
+from mamba.widgets.imagebutton import LockableTextButton
+
+
+class LevelMenu(Habitat):
+
+    def __init__(self):
+        super(LevelMenu, self).__init__()
+        self.levels = []
+        for level in range(1, 6):
+            button = LockableTextButton((50 + 75 * level, 100), str(level))
+            self.container.add(button)
+            button.add_callback('clicked', self.level_selected, level)
+            if level > 1:
+                button.locked = True
+        self.container.add_callback(KEYDOWN, self.keydown_event)
+
+    def level_selected(self, ev, widget, level):
+        # Demo:
+        if widget.locked:
+            widget.locked = False
+        if level == 1:
+            from mamba.habitats.level import LevelHabitat
+            NewHabitatEvent.post(LevelHabitat('dev'))
+        return True
+
+    def keydown_event(self, ev, widget):
+        if ev.key in ESCAPE_KEYS:
+            return self.return_to_mainmenu(ev, widget)
+
+    def return_to_mainmenu(self, ev, widget):
+        from mamba.habitats.mainmenu import MainMenu
+        NewHabitatEvent.post(MainMenu())
+        return True
--- a/mamba/habitats/mainmenu.py	Tue Sep 13 22:42:44 2011 +0200
+++ b/mamba/habitats/mainmenu.py	Tue Sep 13 22:47:26 2011 +0200
@@ -12,28 +12,28 @@
 class MainMenu(Habitat):
     def __init__(self):
         super(MainMenu, self).__init__()
-        start = TextButton((100, 100), "Dev Level", color='white')
+        start = TextButton((100, 100), "Play Game")
         start.add_callback('clicked', self.start_event)
         self.container.add(start)
-        edit = TextButton((100, 200), "Edit Dev Level", color='white')
+        edit = TextButton((100, 200), "Edit Dev Level")
         edit.add_callback('clicked', self.edit_event)
         self.container.add(edit)
-        quit = TextButton((100, 300), "Quit", color='white')
+        quit = TextButton((100, 300), "Quit")
         quit.add_callback('clicked', self.quit_keydown_event)
         self.container.add(quit)
         self.container.add_callback(KEYDOWN, self.keydown_event)
 
         # Just for debugging cascading containers...
         c = Container((400, 100))
-        c.add(TextButton((400, 100), "3", color='white'))
+        c.add(TextButton((400, 100), "3"))
         self.container.add(c)
         c = Container((400, 200))
-        c.add(TextButton((400, 200), "4", color='white'))
+        c.add(TextButton((400, 200), "4"))
         self.container.add(c)
 
     def start_event(self, ev, widget):
-        from mamba.habitats.level import LevelHabitat
-        NewHabitatEvent.post(LevelHabitat('dev'))
+        from mamba.habitats.levelmenu import LevelMenu
+        NewHabitatEvent.post(LevelMenu())
         return True
 
     def edit_event(self, ev, widget):