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