view mamba/habitats/level.py @ 344:214b2bd173a8

Move level_completed to the Level habitat, so that we can go_menu()
author Stefano Rivera <stefano@rivera.za.net>
date Fri, 16 Sep 2011 22:29:48 +0200
parents 8643c7dbc8ad
children d4062344d8f4
line wrap: on
line source

"""Where a level object hides."""

from pygame.locals import KEYDOWN

from mamba.constants import ESCAPE_KEYS
from mamba.engine import Habitat, LevelCompletedEvent
from mamba.gamestate import level_done
from mamba.widgets.game import GameWidget
from mamba.widgets.messagebox import MessageBox
from mamba.world import World


class LevelHabitat(Habitat):
    def __init__(self, level, go_menu):
        super(LevelHabitat, self).__init__()
        self.go_menu = go_menu
        self.world = World(level)
        game_widget = GameWidget(self.world)
        self.container.add(game_widget)
        self.container.add_callback(KEYDOWN, self.keydown_event)
        self.container.add_callback(LevelCompletedEvent, self.level_completed)

    def keydown_event(self, ev, widget):
        if ev.key in ESCAPE_KEYS:
            self.go_menu()
            return True

    def level_completed(self, ev, widget):
        if not self.world.pause():
            return False
        messagebox = MessageBox((300, 200), 'Level complete!',
                                self.go_menu)
        self.container.add(messagebox)
        messagebox.grab_focus()
        level_done(self.world.level.level_name)
        return True