# HG changeset patch # User Stefano Rivera # Date 1378312208 -7200 # Node ID e89a43d208b9ed46db9c3ac8bbcdcaefbd05e642 # Parent c8ead015c48e1130e5110c64f29510b6f458e03a A stupid, simple menu diff -r c8ead015c48e -r e89a43d208b9 nagslang/screens/menu.py --- 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()