changeset 55:26d7bb8c09c8

Only save levels if the loops are closed
author Neil Muller <drnlmuller@gmail.com>
date Sun, 01 Sep 2013 18:50:19 +0200
parents 2c1b85b6f457
children b9430b4a48da
files tools/area_editor.py
diffstat 1 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tools/area_editor.py	Sun Sep 01 18:46:05 2013 +0200
+++ b/tools/area_editor.py	Sun Sep 01 18:50:19 2013 +0200
@@ -89,15 +89,32 @@
         surface.blit(self._surface, (0, 0), surface_area)
 
     def save(self):
+        closed = True
+        for poly in self.polygons.values():
+            if len(poly) == 0:
+                # We ignore empty polygons
+                continue
+            elif len(poly) == 1:
+                closed = False
+                print "\033[31mError: polygon too small\033[0m"
+            elif poly[-1] != poly[0]:
+                closed = False
+                print "\033[31mError: polygon not closed\033[0m"
+        if not closed:
+            print 'Not saving the level'
+            return
         levelfile = resources.get_resource_path(self.name)
         with file(levelfile, 'w') as f:
             f.write('X-Size: %s\n' % self.x)
             f.write('Y-Size: %s\n' % self.y)
             f.write('Base tile: %s\n' % self.basetile)
             for i, poly in self.polygons.items():
+                if len(poly) == 0:
+                    continue
                 f.write('Polygon %d : %d\n' % (i, len(poly)))
                 for point in poly:
                     f.write('Point: %d %d\n' % point)
+        print 'level %s saved' % self.name
 
 
 class Editor(object):