Mercurial > nagslang
diff nagslang/level.py @ 164:06c681ff53aa
Round-tripping through load/save shouldn't discard objects
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Tue, 03 Sep 2013 10:47:27 +0200 |
parents | 0c49627920eb |
children | ce8d4fc3baf4 |
line wrap: on
line diff
--- a/nagslang/level.py Tue Sep 03 01:21:24 2013 +0200 +++ b/nagslang/level.py Tue Sep 03 10:47:27 2013 +0200 @@ -29,12 +29,22 @@ self._exterior = False self._glue = go.PuzzleGlue() self._drawables = [] + self._game_objects = [] def _get_data(self): # For overriding in tests. with resources.get_file('levels', self.name) as f: return load(f) + def _dump_data(self, f): + # For manipulation in tests. + dump({ + 'size': [self.x, self.y], + 'base_tile': self.basetile, + 'polygons': self.polygons, + 'game_objects': self._game_objects, + }, f) + def load(self, space): data = self._get_data() self.x, self.y = data['size'] @@ -43,7 +53,8 @@ self.polygons[i] = [] for point in points: self.polygons[i].append(tuple(point)) - for game_object_dict in data.get('game_objects', []): + self._game_objects = data.get('game_objects', []) + for game_object_dict in self._game_objects: self._create_game_object(space, **game_object_dict) def _create_game_object(self, space, classname, args, name=None): @@ -83,11 +94,7 @@ if not closed: return False with resources.get_file('levels', self.name, mode='w') as f: - dump({ - 'size': [self.x, self.y], - 'base_tile': self.basetile, - 'polygons': self.polygons, - }, f) + self._dump_data(f) return True def get_size(self):