Mercurial > mamba
comparison mamba/habitats/editor.py @ 555:c014f5023cd2
Test run replays
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Thu, 22 Sep 2011 17:32:38 +0200 |
parents | a2648295b7cf |
children | fda360905a1e |
comparison
equal
deleted
inserted
replaced
554:b308ebaa96f3 | 555:c014f5023cd2 |
---|---|
72 self.edit_widget.add_callback(LevelCompletedEvent, self.halt_test) | 72 self.edit_widget.add_callback(LevelCompletedEvent, self.halt_test) |
73 self.mode = 'Tiles' | 73 self.mode = 'Tiles' |
74 self.sprite_mode = 'Add' | 74 self.sprite_mode = 'Add' |
75 self.sprite_cls = None | 75 self.sprite_cls = None |
76 # Map for test mode lookups | 76 # Map for test mode lookups |
77 self.replays = {} | |
77 self.action_map = { | 78 self.action_map = { |
78 K_UP: UP, | 79 K_UP: UP, |
79 K_DOWN: DOWN, | 80 K_DOWN: DOWN, |
80 K_LEFT: LEFT, | 81 K_LEFT: LEFT, |
81 K_RIGHT: RIGHT, | 82 K_RIGHT: RIGHT, |
211 for name in ['Edit', 'Delete']: | 212 for name in ['Edit', 'Delete']: |
212 tile_button = TextButton((0, 0), '%s Sprite' % name) | 213 tile_button = TextButton((0, 0), '%s Sprite' % name) |
213 tile_button.add_callback('clicked', self.sprite_tool, | 214 tile_button.add_callback('clicked', self.sprite_tool, |
214 name, None, None) | 215 name, None, None) |
215 tool_list.append(tile_button) | 216 tool_list.append(tile_button) |
217 elif self.mode == 'Test': | |
218 for replay in [1, 2]: | |
219 store_button = TextButton((0, 0), | |
220 'Store run as %s' % replay) | |
221 store_button.add_callback('clicked', self.store_replay, | |
222 replay) | |
223 tool_list.append(store_button) | |
224 replay_button = TextButton((0, 0), | |
225 'Replay run %s' % replay) | |
226 replay_button.add_callback('clicked', self.do_replay, | |
227 replay) | |
228 tool_list.append(replay_button) | |
229 last_button = TextButton((0, 0), | |
230 'Replay last run') | |
231 last_button.add_callback('clicked', self.do_replay, None) | |
232 tool_list.append(last_button) | |
216 self.tool_widget = ToolListWidget((button_left, button_height), | 233 self.tool_widget = ToolListWidget((button_left, button_height), |
217 tool_list, MAX_TOOLS, start_key=K_2) | 234 tool_list, MAX_TOOLS, start_key=K_2) |
218 self.toolbar[self.mode] = self.tool_widget | 235 self.toolbar[self.mode] = self.tool_widget |
219 self.container.add(self.tool_widget) | 236 self.container.add(self.tool_widget) |
220 | 237 |
394 self.level.level_name = '' # Special case for new level | 411 self.level.level_name = '' # Special case for new level |
395 self.container.paused = False | 412 self.container.paused = False |
396 self.edit_widget = EditLevelWidget(self.level) | 413 self.edit_widget = EditLevelWidget(self.level) |
397 self.edit_widget.add_callback(SnakeDiedEvent, self.halt_test) | 414 self.edit_widget.add_callback(SnakeDiedEvent, self.halt_test) |
398 self.edit_widget.add_callback(LevelCompletedEvent, self.halt_test) | 415 self.edit_widget.add_callback(LevelCompletedEvent, self.halt_test) |
416 self.replays = {} | |
399 self.container.add(self.edit_widget) | 417 self.container.add(self.edit_widget) |
400 self.clear_toolbar() | 418 self.clear_toolbar() |
401 self.setup_toolbar() | 419 self.setup_toolbar() |
402 return True | 420 return True |
403 | 421 |
544 self.level.add_sprite(sprite) | 562 self.level.add_sprite(sprite) |
545 elif self.sprite_mode == 'Edit': | 563 elif self.sprite_mode == 'Edit': |
546 self.level.replace_sprite(sprite) | 564 self.level.replace_sprite(sprite) |
547 self.level.restart() | 565 self.level.restart() |
548 return True | 566 return True |
567 | |
568 def store_replay(self, ev, widget, number): | |
569 self.replays[number] = self.edit_widget.get_replay() | |
570 | |
571 def do_replay(self, ev, widget, number): | |
572 if number: | |
573 # We do nothing if the user tries to replay something thay | |
574 # isn't there | |
575 if number in self.replays: | |
576 # Replay stored replay | |
577 self.edit_widget.replay(self.replays[number]) | |
578 else: | |
579 # Replaying last run | |
580 self.edit_widget.replay() |