# HG changeset patch # User Stefano Rivera # Date 1378500254 -7200 # Node ID 150332d6c1fba800f7d7f0d75d0686fb99830d0c # Parent 8c7c5db5f0d32b26af7238422d437f35d143293d Move the inventory to world, to slightly reduce overall hackyness diff -r 8c7c5db5f0d3 -r 150332d6c1fb nagslang/game_object.py --- a/nagslang/game_object.py Fri Sep 06 22:33:51 2013 +0200 +++ b/nagslang/game_object.py Fri Sep 06 22:44:14 2013 +0200 @@ -501,7 +501,7 @@ ) def _collect(self, protagonist): - protagonist.inventory.add(self._name) + protagonist.add_item(self._name) # TODO: Make this less hacky. self.physicser.remove_from_space() self.renderer = render.NullRenderer() diff -r 8c7c5db5f0d3 -r 150332d6c1fb nagslang/protagonist.py --- a/nagslang/protagonist.py Fri Sep 06 22:33:51 2013 +0200 +++ b/nagslang/protagonist.py Fri Sep 06 22:44:14 2013 +0200 @@ -72,7 +72,6 @@ super(Protagonist, self).__init__( self._make_physics(space, position), self._make_renderer()) self.world = world - self.inventory = set() self.health_level = PROTAGONIST_HEALTH_MAX_LEVEL self.angle = 0 @@ -256,7 +255,6 @@ self.impulse_factor = old_protagonist.impulse_factor self.form = old_protagonist.form self.angle = old_protagonist.angle - self.inventory = old_protagonist.inventory def toggle_form(self): if self.check_timer('change_delay'): @@ -322,7 +320,10 @@ return self.form == self.HUMAN_FORM def has_item(self, item): - return item in self.inventory + return item in self.world.inventory + + def add_item(self, item): + self.world.inventory.add(item) def environmental_movement(self, dx, dy): if (dx, dy) == (0, 0): diff -r 8c7c5db5f0d3 -r 150332d6c1fb nagslang/world.py --- a/nagslang/world.py Fri Sep 06 22:33:51 2013 +0200 +++ b/nagslang/world.py Fri Sep 06 22:44:14 2013 +0200 @@ -25,11 +25,12 @@ 'transformations': 0, 'kills': 0, 'rooms': 0, - 'protagonist': Protagonist(pymunk.Space(), self, - starting_position), 'level': (first_level, starting_position), 'level_state': {}, + 'inventory': set(), } + self.__dict__['protagonist'] = Protagonist( + pymunk.Space(), self, starting_position) def __getattr__(self, name): try: @@ -54,7 +55,7 @@ def save(self): data = self._data.copy() - data['inventory'] = sorted(data.pop('protagonist').inventory) + data['inventory'] = sorted(data['inventory']) fn = self._save_location() if not os.path.isdir(os.path.dirname(fn)): os.makedirs(os.path.dirname(fn)) @@ -67,9 +68,8 @@ return False with open(fn) as f: data = load(f) - self.protagonist.inventory = set(data.pop('inventory', [])) - for k, v in data.iteritems(): - setattr(self, k, v) + data['inventory'] = set(data['inventory']) + self.__dict__['_data'] = data return True def get_formatted_stats(self):