Mercurial > mamba
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 |