Mercurial > mamba
annotate mamba/world.py @ 286:71bc946ce1f1
Check if paused to avoid displaing two MessageBoxes on the screen if we manage to stack up SnakeDied events
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Thu, 15 Sep 2011 23:07:18 +0200 |
parents | cacc03748580 |
children | e89702425a73 |
rev | line source |
---|---|
78 | 1 """World state (level, plus snake, plus other sprites).""" |
2 | |
122
45dd79e9ba1b
Rudimentary FPS and clock ticking.
Simon Cross <hodgestar@gmail.com>
parents:
119
diff
changeset
|
3 import time |
45dd79e9ba1b
Rudimentary FPS and clock ticking.
Simon Cross <hodgestar@gmail.com>
parents:
119
diff
changeset
|
4 |
78 | 5 from mamba.snake import Snake |
6 | |
7 | |
8 class World(object): | |
9 def __init__(self, level): | |
10 self.level = level | |
285
cacc03748580
Move world initialisation to restart
Stefano Rivera <stefano@rivera.za.net>
parents:
243
diff
changeset
|
11 self.restart() |
110 | 12 |
111 | 13 def get_size(self): |
14 return self.level.get_size() | |
15 | |
110 | 16 def draw(self, surface): |
111 | 17 self.level.draw(surface) |
110 | 18 self.snake.draw(surface) |
119
119c0fb758c2
Move key handling into GameWidget and GameWidget into widgets.game.
Simon Cross <hodgestar@gmail.com>
parents:
111
diff
changeset
|
19 |
243 | 20 def get_sprite(self, sprite_id): |
21 return self.level.extra_sprites[sprite_id] | |
22 | |
119
119c0fb758c2
Move key handling into GameWidget and GameWidget into widgets.game.
Simon Cross <hodgestar@gmail.com>
parents:
111
diff
changeset
|
23 def update(self): |
122
45dd79e9ba1b
Rudimentary FPS and clock ticking.
Simon Cross <hodgestar@gmail.com>
parents:
119
diff
changeset
|
24 prev = self._prev |
45dd79e9ba1b
Rudimentary FPS and clock ticking.
Simon Cross <hodgestar@gmail.com>
parents:
119
diff
changeset
|
25 self._prev = time.time() |
191
454f7552e863
Pause the world, I may want to get off
Neil Muller <drnlmuller@gmail.com>
parents:
188
diff
changeset
|
26 if self._paused: |
454f7552e863
Pause the world, I may want to get off
Neil Muller <drnlmuller@gmail.com>
parents:
188
diff
changeset
|
27 return |
122
45dd79e9ba1b
Rudimentary FPS and clock ticking.
Simon Cross <hodgestar@gmail.com>
parents:
119
diff
changeset
|
28 if prev is None: |
45dd79e9ba1b
Rudimentary FPS and clock ticking.
Simon Cross <hodgestar@gmail.com>
parents:
119
diff
changeset
|
29 return |
45dd79e9ba1b
Rudimentary FPS and clock ticking.
Simon Cross <hodgestar@gmail.com>
parents:
119
diff
changeset
|
30 dt = self._prev - prev |
45dd79e9ba1b
Rudimentary FPS and clock ticking.
Simon Cross <hodgestar@gmail.com>
parents:
119
diff
changeset
|
31 |
181
061d711ba570
Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents:
122
diff
changeset
|
32 self.snake.update(dt, self) |
061d711ba570
Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents:
122
diff
changeset
|
33 |
182
0a955d2536f0
Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents:
181
diff
changeset
|
34 def interact(self, segment): |
188
d76c069164c0
Much better interaction detection.
Jeremy Thurgood <firxen@gmail.com>
parents:
186
diff
changeset
|
35 tiles = segment.filter_collisions(self.level.sprites) |
d76c069164c0
Much better interaction detection.
Jeremy Thurgood <firxen@gmail.com>
parents:
186
diff
changeset
|
36 for tile in tiles: |
243 | 37 tile.interact(self, segment) |
186 | 38 |
191
454f7552e863
Pause the world, I may want to get off
Neil Muller <drnlmuller@gmail.com>
parents:
188
diff
changeset
|
39 def pause(self): |
286
71bc946ce1f1
Check if paused to avoid displaing two MessageBoxes on the screen if we manage to stack up SnakeDied events
Stefano Rivera <stefano@rivera.za.net>
parents:
285
diff
changeset
|
40 was_paused, self._paused = self._paused, True |
71bc946ce1f1
Check if paused to avoid displaing two MessageBoxes on the screen if we manage to stack up SnakeDied events
Stefano Rivera <stefano@rivera.za.net>
parents:
285
diff
changeset
|
41 return was_paused == False |
191
454f7552e863
Pause the world, I may want to get off
Neil Muller <drnlmuller@gmail.com>
parents:
188
diff
changeset
|
42 |
454f7552e863
Pause the world, I may want to get off
Neil Muller <drnlmuller@gmail.com>
parents:
188
diff
changeset
|
43 def resume(self): |
286
71bc946ce1f1
Check if paused to avoid displaing two MessageBoxes on the screen if we manage to stack up SnakeDied events
Stefano Rivera <stefano@rivera.za.net>
parents:
285
diff
changeset
|
44 was_paused, self._paused = self._paused, False |
71bc946ce1f1
Check if paused to avoid displaing two MessageBoxes on the screen if we manage to stack up SnakeDied events
Stefano Rivera <stefano@rivera.za.net>
parents:
285
diff
changeset
|
45 return was_paused == True |
191
454f7552e863
Pause the world, I may want to get off
Neil Muller <drnlmuller@gmail.com>
parents:
188
diff
changeset
|
46 |
186 | 47 def restart(self): |
48 self.level.restart() | |
49 tile_pos, orientation = self.level.get_entry() | |
50 self.snake = Snake(tile_pos, orientation) | |
51 self._prev = None | |
191
454f7552e863
Pause the world, I may want to get off
Neil Muller <drnlmuller@gmail.com>
parents:
188
diff
changeset
|
52 self._paused = False |