Mercurial > nagslang
changeset 239:30137dc83a72
Can has delete objects
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 04 Sep 2013 22:20:36 +0200 |
parents | 28d906fc2ab1 |
children | 21da1b41bbb6 |
files | tools/area_editor.py |
diffstat | 1 files changed, 22 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- 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()