diff tools/area_editor.py @ 204:687459429550

Display interior walls and start working towards drawing them
author Neil Muller <drnlmuller@gmail.com>
date Tue, 03 Sep 2013 23:14:48 +0200
parents c291fd4b49bf
children 51f979ddddbb
line wrap: on
line diff
--- a/tools/area_editor.py	Tue Sep 03 23:29:15 2013 +0200
+++ b/tools/area_editor.py	Tue Sep 03 23:14:48 2013 +0200
@@ -28,7 +28,7 @@
 
 from nagslang.options import parse_args
 from nagslang.constants import SCREEN
-from nagslang.level import Level, POLY_COLORS
+from nagslang.level import Level, POLY_COLORS, LINE_COLOR
 from nagslang.enemies import Enemy
 
 
@@ -141,6 +141,9 @@
                 pygame.draw.line(self._surface, color,
                                  self.point_to_pygame(polygon[-1]),
                                  self.point_to_pygame(endpoint))
+        for line in self.lines:
+            pointlist = [self.point_to_pygame(p) for p in line]
+            pygame.draw.lines(self._surface, LINE_COLOR, False, pointlist, 2)
         return self._surface.copy()
 
 
@@ -157,6 +160,7 @@
         self._mouse_drag = False
         self._draw_objects = False
         self._draw_enemies = False
+        self._draw_lines = False
 
     def _level_coordinates(self, pos):
         # Move positions to level values
@@ -207,9 +211,15 @@
 
     def change_poly(self, new_poly):
         self.cur_poly = new_poly
+        self._draw_lines = False
         if self.cur_poly is not None:
             self.filled_mode = False
 
+    def line_mode(self):
+        self.cur_poly = None
+        self._draw_lines = True
+        self.filled_mode = False
+
     def key_down(self, ev):
         if ev.key == pgl.K_LEFT:
             self._move_view((-10, 0))
@@ -235,6 +245,7 @@
         if closed:
             self.cur_poly = None
             self.filled_mode = True
+            self._draw_lines = False
         else:
             alert('Not all polygons closed, so not filling')
 
@@ -255,8 +266,12 @@
 
     def mouse_down(self, ev):
         if ev.button == 1:
-            print "Click: %r" % (
-                self.level.point_to_pymunk(self._level_coordinates(ev.pos)),)
+            if self._draw_lines:
+                pass
+            else:
+                print "Click: %r" % (
+                    self.level.point_to_pymunk(
+                        self._level_coordinates(ev.pos)),)
         if ev.button == 4:  # Scroll up
             self._move_view((0, -10))
         elif ev.button == 5:  # Scroll down
@@ -335,6 +350,12 @@
         self.add(end_poly_but)
         y += MENU_BUTTON_HEIGHT + MENU_PAD
 
+        draw_line = Button("Draw interior wall", self.level_widget.line_mode)
+        draw_line.rect = button_rect.copy()
+        draw_line.rect.move_ip(MENU_LEFT, y)
+        self.add(draw_line)
+        y += MENU_BUTTON_HEIGHT + MENU_PAD
+
         fill_but = Button('Fill exterior', action=self.level_widget.set_filled)
         fill_but.rect = button_rect.copy()
         fill_but.rect.move_ip(MENU_LEFT, y)