changeset 363:21caf90f604e

Validate levels before saving them
author Neil Muller <drnlmuller@gmail.com>
date Sat, 17 Sep 2011 00:07:23 +0200
parents cc8be536a7fc
children ab77047aca69
files mamba/habitats/editor.py mamba/level.py
diffstat 2 files changed, 14 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/habitats/editor.py	Sat Sep 17 00:03:46 2011 +0200
+++ b/mamba/habitats/editor.py	Sat Sep 17 00:07:23 2011 +0200
@@ -201,6 +201,10 @@
             message = MessageBox((300, 300), 'Please enter a name')
         elif self.level.level_name in RESERVED_NAMES:
             message = MessageBox((300, 300), 'Reserved level name')
+        try:
+            self.level.validate_level()
+        except InvalidMapError, error:
+            message = MessageBox((300, 300), "Map isn't valid\n%s" % error)
         if message:
             self.container.paused = True
             self.container.add(message)
--- a/mamba/level.py	Sat Sep 17 00:03:46 2011 +0200
+++ b/mamba/level.py	Sat Sep 17 00:07:23 2011 +0200
@@ -119,6 +119,16 @@
         self.setup_level(tiles_ascii, sprites_ascii)
         self.make_background()
 
+    def validate_level(self):
+        old_tiles_ascii = self.tiles_ascii[:]
+        old_tiles = self.tiles[:]
+        try:
+            self.update_tiles_ascii()
+            self.setup_tiles(self.tiles_ascii)
+        finally:
+            self.tiles = old_tiles
+            self.tiles_ascii = old_tiles_ascii
+
     def save_level(self):
         """Save the current state of the level"""
         save_file = load_file('levels/%s.txt' % (self.level_name,), 'wb')