Mercurial > mamba
view 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 |
line wrap: on
line source
"""Main menu.""" import pygame from pygame.locals import (KEYDOWN, QUIT, K_LEFT, K_RIGHT, K_UP, K_DOWN) import pygame.event from mamba.data import load_image from mamba.constants import ESCAPE_KEYS from mamba.engine import Habitat, NewHabitatEvent from mamba.level import Level from mamba.widgets.overlay import OverlayOnFocusButton class MainMenu(Habitat): def __init__(self): super(MainMenu, self).__init__() self.bg_image = load_image('menus/splash.png') 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 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) self.container.add(box) return box def start_event(self, ev, widget): from mamba.habitats.levelmenu import OfficialLevelMenu NewHabitatEvent.post(OfficialLevelMenu()) return True def userlevels_event(self, ev, widget): from mamba.habitats.userlevelmenu import UserLevelMenu NewHabitatEvent.post(UserLevelMenu()) return True def networklevels_event(self, ev, widget): from mamba.habitats.userlevelmenu import NetworkLevelMenu NewHabitatEvent.post(NetworkLevelMenu()) return True def edit_event(self, ev, widget): from mamba.habitats.editor import EditorHabitat NewHabitatEvent.post(EditorHabitat(Level('templates/blank', 'template'))) return True def quit_keydown_event(self, ev, widget): pygame.event.post(pygame.event.Event(QUIT)) return True def credits_event(self, ev, widget): from mamba.habitats.credits import CreditsHabitat NewHabitatEvent.post(CreditsHabitat()) return True def keydown_event(self, ev, widget): if ev.key in ESCAPE_KEYS: pygame.event.post(pygame.event.Event(QUIT)) return True