changeset 226:e89a43d208b9

A stupid, simple menu
author Stefano Rivera <stefano@rivera.za.net>
date Wed, 04 Sep 2013 18:30:08 +0200
parents c8ead015c48e
children acecb3d9b438
files nagslang/screens/menu.py
diffstat 1 files changed, 37 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/nagslang/screens/menu.py	Wed Sep 04 18:04:59 2013 +0200
+++ b/nagslang/screens/menu.py	Wed Sep 04 18:30:08 2013 +0200
@@ -8,15 +8,47 @@
 
 
 class MenuScreen(Screen):
+    def setup(self):
+        # Position is hacked later
+        self.cursor = TextWidget((0, 0), u'\N{Rightwards Arrow}',
+                                 colour='red')
+        self.cursor_pos = 0
+        self.options = [
+            self.new_game,
+            self.load_game,
+            self.quit,
+        ]
+        self.widgets = [
+            TextWidget((10, 10), 'Menu', fontsize=20),
+            TextWidget((40, 50), 'Start new game'),
+            TextWidget((40, 70), 'Restore saved game'),
+            TextWidget((40, 90), 'Quit'),
+            self.cursor,
+        ]
 
     def handle_event(self, ev):
         if ev.type == pygame.locals.KEYDOWN:
             if ev.key == pygame.locals.K_ESCAPE:
-                QuitEvent.post()
-            elif ev.key == pygame.locals.K_1:
-                ScreenChange.post('level1', None)
+                self.quit()
+            elif ev.key == pygame.locals.K_DOWN:
+                self.cursor_pos = (self.cursor_pos + 1) % len(self.options)
+            elif ev.key == pygame.locals.K_UP:
+                self.cursor_pos = (self.cursor_pos - 1) % len(self.options)
+            elif ev.key == pygame.locals.K_RETURN:
+                self.options[self.cursor_pos]()
 
     def render(self, surface):
         surface.fill(pygame.color.Color(255, 255, 255))
-        TextWidget((10, 10), 'Menu').draw(surface)
-        TextWidget((10, 30), 'Press 1 to start').draw(surface)
+        self.cursor.pos = (10, 50 + 20 * self.cursor_pos)
+        self.cursor.rect.top = self.cursor.pos[1]
+        for widget in self.widgets:
+            widget.draw(surface)
+
+    def new_game(self):
+        ScreenChange.post('level1', None)
+
+    def load_game(self):
+        raise NotImplementedError()
+
+    def quit(self):
+        QuitEvent.post()