Mercurial > mamba
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 |
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 | 4 |
5 from mamba.constants import ESCAPE_KEYS | |
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 | 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 | 30 |
31 def keydown_event(self, ev, widget): | |
32 if ev.key in ESCAPE_KEYS: | |
62 | 33 from mamba.habitats.mainmenu import MainMenu |
61 | 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 |