# HG changeset patch # User Neil Muller # Date 1316208508 -7200 # Node ID abd9a2ceadb7a244236aa13ea0b299237d5541c9 # Parent 03d0a7dbb7242d039dcc08ab6e63f6de0aad09c2 Fix and extend sprite fiddling code diff -r 03d0a7dbb724 -r abd9a2ceadb7 mamba/level.py --- a/mamba/level.py Fri Sep 16 23:27:49 2011 +0200 +++ b/mamba/level.py Fri Sep 16 23:28:28 2011 +0200 @@ -313,7 +313,7 @@ exist""" for sprite_ascii in self.sprites_ascii: try: - pos, _sep, rest = sprite_ascii.partition(':') + pos, _, rest = sprite_ascii.partition(':') pos = [int(x.strip()) for x in pos.split(',')] except ValueError: continue @@ -327,10 +327,13 @@ def validate_sprite(self, sprite): """Check that the sprite line is valid""" - pos, _sep, rest = sprite.partition(':') - pos = [int(x.strip()) for x in pos.split(',')] - class_name, rest = rest.split(None, 1) - args = rest.split() + try: + pos, _sep, rest = sprite.partition(':') + pos = [int(x.strip()) for x in pos.split(',')] + class_name, rest = rest.split(None, 1) + args = rest.split() + except ValueError: + raise InvalidMapError('Unable to determine sprite parameters.') sprite_id, args = args[0], args[1:] try: cls = sprites.find_sprite(class_name) @@ -339,5 +342,17 @@ sprite = cls(*args) if sprite_id in self.extra_sprites: # Check that duplicate id is not at the same position - if self.extra[sprite_id].tile_pos != pos: + if self.extra_sprites[sprite_id].tile_pos != pos: raise InvalidMapError('Duplicate sprite id: %s.' % sprite_id) + + def add_sprite(self, sprite): + self.sprites_ascii.append(sprite) + + def replace_sprite(self, sprite): + # Need to find the sprite at the same psoition + pos, _sep, rest = sprite.partition(':') + pos = [int(x.strip()) for x in pos.split(',')] + old_sprite = self.get_sprite_at(pos) + print sprite, old_sprite + self.sprites_ascii.remove(old_sprite) + self.sprites_ascii.append(sprite)