annotate mamba/habitats/level.py @ 79:f602a8c3d173

Fix bugs. Stubbed out get_entry for now.
author Simon Cross <hodgestar@gmail.com>
date Sun, 11 Sep 2011 18:33:17 +0200
parents b1019923cb12
children 0c1005c76c87
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
6d195a3a4557 Somewhere for levels to live.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
1 """Where a level object hides."""
6d195a3a4557 Somewhere for levels to live.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
2
78
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
3 from pygame.locals import KEYDOWN, K_LEFT, K_RIGHT, K_UP, K_DOWN
61
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
4
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
5 from mamba.constants import ESCAPE_KEYS
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
6 from mamba.engine import Habitat, NewHabitatEvent
78
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
7 from mamba.world import World
19
6d195a3a4557 Somewhere for levels to live.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
8 from mamba.widgets.level import LevelWidget
79
f602a8c3d173 Fix bugs. Stubbed out get_entry for now.
Simon Cross <hodgestar@gmail.com>
parents: 78
diff changeset
9 from mamba.snake import Snake
19
6d195a3a4557 Somewhere for levels to live.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
10 from mamba.level import Level
6d195a3a4557 Somewhere for levels to live.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
11
6d195a3a4557 Somewhere for levels to live.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
12
6d195a3a4557 Somewhere for levels to live.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
13 class LevelHabitat(Habitat):
6d195a3a4557 Somewhere for levels to live.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
14 def __init__(self, level_name):
24
30d4f3e62bcf Refactor widgets *again*, add container to Habitat
Stefano Rivera <stefano@rivera.za.net>
parents: 19
diff changeset
15 super(LevelHabitat, self).__init__()
78
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
16 level = Level(level_name)
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
17 level_widget = LevelWidget(level)
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
18 self.container.add(level_widget)
61
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
19 self.container.add_callback(KEYDOWN, self.keydown_event)
78
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
20 self.world = World(level)
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
21 self.actions = self.create_action_map()
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
22
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
23 def create_action_map(self):
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
24 actions = {}
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
25 actions[K_LEFT] = (self.world.snake.set_orientation, (Snake.LEFT,))
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
26 actions[K_RIGHT] = (self.world.snake.set_orientation, (Snake.RIGHT,))
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
27 actions[K_DOWN] = (self.world.snake.set_orientation, (Snake.DOWN,))
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
28 actions[K_UP] = (self.world.snake.set_orientation, (Snake.UP,))
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
29 return actions
61
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
30
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
31 def keydown_event(self, ev, widget):
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
32 if ev.key in ESCAPE_KEYS:
62
40be38f4427c Bug squashing.
Simon Cross <hodgestar@gmail.com>
parents: 61
diff changeset
33 from mamba.habitats.mainmenu import MainMenu
61
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
34 NewHabitatEvent.post(MainMenu())
72
095914aee329 Return True from keydown_event so that the container knows the event has been handled.
Simon Cross <hodgestar@gmail.com>
parents: 62
diff changeset
35 return True
78
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
36 elif ev.key in self.actions:
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
37 func, args = self.actions[ev.key]
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
38 func(*args)
b1019923cb12 Direction control for snake.
Simon Cross <hodgestar@gmail.com>
parents: 72
diff changeset
39 return True