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()