Mercurial > mamba
changeset 522:b250b4c6c9ba
Link up boxes in main menu.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sun, 18 Sep 2011 00:45:37 +0200 |
parents | 8a3884201d00 |
children | 01ef685191d3 |
files | mamba/habitats/mainmenu.py |
diffstat | 1 files changed, 33 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/mamba/habitats/mainmenu.py Sun Sep 18 00:44:11 2011 +0200 +++ b/mamba/habitats/mainmenu.py Sun Sep 18 00:45:37 2011 +0200 @@ -1,7 +1,8 @@ """Main menu.""" import pygame -from pygame.locals import KEYDOWN, QUIT +from pygame.locals import (KEYDOWN, QUIT, K_LEFT, K_RIGHT, K_UP, + K_DOWN) import pygame.event from mamba.data import load_image @@ -16,19 +17,42 @@ super(MainMenu, self).__init__() self.bg_image = load_image('menus/splash.png') - self.add_box((117, 135), (556, 85), 'play', self.start_event) - self.add_box((117, 255), (260, 102), 'user', self.userlevels_event) - self.add_box((112, 384), (310, 102), 'network', - self.networklevels_event) - self.add_box((424, 258), (267, 96), 'editor', self.edit_event) - self.add_box((435, 389), (210, 90), 'quit', self.quit_keydown_event) - self.add_box((578, 480), (131, 31), 'credits', self.credits_event) + play = self.add_box((117, 135), (556, 85), 'play', self.start_event) + user = self.add_box((117, 255), (260, 102), 'user', + self.userlevels_event) + network = self.add_box((112, 384), (310, 102), 'network', + self.networklevels_event) + editor = self.add_box((424, 258), (267, 96), 'editor', self.edit_event) + quitb = self.add_box((435, 389), (210, 90), 'quit', + self.quit_keydown_event) + credits = self.add_box((578, 480), (131, 31), 'credits', + self.credits_event) self.container.add_callback(KEYDOWN, self.keydown_event) + self.link_boxes(play, K_UP, editor, None) + self.link_boxes(user, K_LEFT, editor, K_RIGHT) + self.link_boxes(network, K_LEFT, quitb, K_RIGHT) + self.link_boxes(editor, K_UP, quitb, K_DOWN) + self.link_boxes(quitb, K_UP, credits, K_DOWN) + def draw_background(self): self.surface.blit(self.bg_image, self.surface.get_rect()) - def add_box(self, pos, size, overlay_name, clicked): + def link_boxes(self, left_box, left_key, right_box, right_key): + def go_right(ev, widget): + if ev.key == right_key: + right_box.grab_focus() + return True + + def go_left(ev, widget): + if ev.key == left_key: + left_box.grab_focus() + return True + + left_box.add_callback(KEYDOWN, go_right) + right_box.add_callback(KEYDOWN, go_left) + + def add_box(self, pos, size, overlay_name, clicked, other=None): image = load_image('menus/highlight-%s.png' % overlay_name) box = OverlayOnFocusButton(pygame.Rect(pos, size), image) box.add_callback('clicked', clicked)