view mamba/habitats/mainmenu.py @ 474:590aa23648f8

Display credits button
author Stefano Rivera <stefano@rivera.za.net>
date Sat, 17 Sep 2011 21:58:22 +0200
parents 165fcc747951
children c85b4affd80f
line wrap: on
line source

"""Main menu."""

import pygame
from pygame.locals import KEYDOWN, QUIT
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 OverlayButton


class MainMenu(Habitat):
    def __init__(self):
        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)
        self.container.add_callback(KEYDOWN, self.keydown_event)

    def draw_background(self):
        self.surface.blit(self.bg_image, self.surface.get_rect())

    def add_box(self, pos, size, overlay_name, clicked):
        image = load_image('menus/highlight-%s.png' % overlay_name)
        box = OverlayButton(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):
        raise NotImplementedError("Shout at Adrianna")
        return True

    def keydown_event(self, ev, widget):
        if ev.key in ESCAPE_KEYS:
            pygame.event.post(pygame.event.Event(QUIT))
            return True