Mercurial > mamba
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')