# HG changeset patch # User Neil Muller # Date 1378326036 -7200 # Node ID 30137dc83a7232bae00284a205587531f030e51e # Parent 28d906fc2ab1eba6403afb47b8ac2aba2637c23f Can has delete objects diff -r 28d906fc2ab1 -r 30137dc83a72 tools/area_editor.py --- a/tools/area_editor.py Wed Sep 04 22:07:20 2013 +0200 +++ b/tools/area_editor.py Wed Sep 04 22:20:36 2013 +0200 @@ -33,7 +33,7 @@ from nagslang.level import Level, POLY_COLORS, LINE_COLOR from nagslang.enemies import Enemy, get_editable_enemies from nagslang.game_object import get_editable_game_objects -from nagslang.puzzle import get_editable_puzzlers +from nagslang.puzzle import get_editable_puzzlers, PuzzleGlue # layout constants MENU_BUTTON_HEIGHT = 35 @@ -171,6 +171,16 @@ pygame.draw.lines(self._surface, LINE_COLOR, False, pointlist, 1) return self._surface.copy() + def reset_objs(self): + # Reset the object state - needed when changing stuff + self.drawables = [] + self.overlay_drawables = [] + self._glue = PuzzleGlue() + for game_object_dict in self._game_objects: + self._create_game_object(pymunk.Space(), **game_object_dict) + for enemy_dict in self._enemies: + self._create_enemy(pymunk.Space(), **enemy_dict) + class ObjectTable(TableView): @@ -391,7 +401,8 @@ # Edit object stuff goes here pass elif res == 'Delete': - pass + self.level._game_objects.remove(choice) + self.level.reset_objs() def edit_enemies(self): edit_box = self._make_edit_dialog(self.level._enemies) @@ -403,26 +414,27 @@ # Edit object stuff goes here pass elif res == 'Delete': - pass + self.level._enemies.remove(choice) + self.level.reset_objs() def _make_choice_dialog(self, classes): # Dialog to hold the editor data = [] for cls_name, cls in classes: data.append({"classname": cls_name, "class": cls}) - edit_box = Dialog() - edit_box.rect = pygame.rect.Rect(0, 0, 700, 500) + choice_box = Dialog() + choice_box.rect = pygame.rect.Rect(0, 0, 700, 500) table = ObjectTable(data) - edit_box.add(table) + choice_box.add(table) buttons = [] for text in ['OK', 'Cancel']: - but = Button(text, action=lambda x=text: edit_box.dismiss(x)) + but = Button(text, action=lambda x=text: choice_box.dismiss(x)) buttons.append(but) row = Row(buttons) row.rect = pygame.rect.Rect(0, 450, 700, 50) - edit_box.add(row) - edit_box.get_selection = lambda: table.get_selection() - return edit_box + choice_box.add(row) + choice_box.get_selection = lambda: table.get_selection() + return choice_box def add_game_object(self): classes = get_editable_game_objects()