comparison mamba/habitats/mainmenu.py @ 522:b250b4c6c9ba

Link up boxes in main menu.
author Simon Cross <hodgestar@gmail.com>
date Sun, 18 Sep 2011 00:45:37 +0200
parents 9393dc6f5707
children
comparison
equal deleted inserted replaced
521:8a3884201d00 522:b250b4c6c9ba
1 """Main menu.""" 1 """Main menu."""
2 2
3 import pygame 3 import pygame
4 from pygame.locals import KEYDOWN, QUIT 4 from pygame.locals import (KEYDOWN, QUIT, K_LEFT, K_RIGHT, K_UP,
5 K_DOWN)
5 import pygame.event 6 import pygame.event
6 7
7 from mamba.data import load_image 8 from mamba.data import load_image
8 from mamba.constants import ESCAPE_KEYS 9 from mamba.constants import ESCAPE_KEYS
9 from mamba.engine import Habitat, NewHabitatEvent 10 from mamba.engine import Habitat, NewHabitatEvent
14 class MainMenu(Habitat): 15 class MainMenu(Habitat):
15 def __init__(self): 16 def __init__(self):
16 super(MainMenu, self).__init__() 17 super(MainMenu, self).__init__()
17 18
18 self.bg_image = load_image('menus/splash.png') 19 self.bg_image = load_image('menus/splash.png')
19 self.add_box((117, 135), (556, 85), 'play', self.start_event) 20 play = self.add_box((117, 135), (556, 85), 'play', self.start_event)
20 self.add_box((117, 255), (260, 102), 'user', self.userlevels_event) 21 user = self.add_box((117, 255), (260, 102), 'user',
21 self.add_box((112, 384), (310, 102), 'network', 22 self.userlevels_event)
22 self.networklevels_event) 23 network = self.add_box((112, 384), (310, 102), 'network',
23 self.add_box((424, 258), (267, 96), 'editor', self.edit_event) 24 self.networklevels_event)
24 self.add_box((435, 389), (210, 90), 'quit', self.quit_keydown_event) 25 editor = self.add_box((424, 258), (267, 96), 'editor', self.edit_event)
25 self.add_box((578, 480), (131, 31), 'credits', self.credits_event) 26 quitb = self.add_box((435, 389), (210, 90), 'quit',
27 self.quit_keydown_event)
28 credits = self.add_box((578, 480), (131, 31), 'credits',
29 self.credits_event)
26 self.container.add_callback(KEYDOWN, self.keydown_event) 30 self.container.add_callback(KEYDOWN, self.keydown_event)
31
32 self.link_boxes(play, K_UP, editor, None)
33 self.link_boxes(user, K_LEFT, editor, K_RIGHT)
34 self.link_boxes(network, K_LEFT, quitb, K_RIGHT)
35 self.link_boxes(editor, K_UP, quitb, K_DOWN)
36 self.link_boxes(quitb, K_UP, credits, K_DOWN)
27 37
28 def draw_background(self): 38 def draw_background(self):
29 self.surface.blit(self.bg_image, self.surface.get_rect()) 39 self.surface.blit(self.bg_image, self.surface.get_rect())
30 40
31 def add_box(self, pos, size, overlay_name, clicked): 41 def link_boxes(self, left_box, left_key, right_box, right_key):
42 def go_right(ev, widget):
43 if ev.key == right_key:
44 right_box.grab_focus()
45 return True
46
47 def go_left(ev, widget):
48 if ev.key == left_key:
49 left_box.grab_focus()
50 return True
51
52 left_box.add_callback(KEYDOWN, go_right)
53 right_box.add_callback(KEYDOWN, go_left)
54
55 def add_box(self, pos, size, overlay_name, clicked, other=None):
32 image = load_image('menus/highlight-%s.png' % overlay_name) 56 image = load_image('menus/highlight-%s.png' % overlay_name)
33 box = OverlayOnFocusButton(pygame.Rect(pos, size), image) 57 box = OverlayOnFocusButton(pygame.Rect(pos, size), image)
34 box.add_callback('clicked', clicked) 58 box.add_callback('clicked', clicked)
35 self.container.add(box) 59 self.container.add(box)
36 return box 60 return box