changeset 374:150332d6c1fb

Move the inventory to world, to slightly reduce overall hackyness
author Stefano Rivera <stefano@rivera.za.net>
date Fri, 06 Sep 2013 22:44:14 +0200
parents 8c7c5db5f0d3
children 83c29d0a0b9c
files nagslang/game_object.py nagslang/protagonist.py nagslang/world.py
diffstat 3 files changed, 11 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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()
--- 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):
--- 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):