Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Item:
- # stuff....
- def save(self, is_equipped: bool=False, in_inventory: bool=False, player_name: str=None):
- if not self.instance_id:
- raise ValueError('An instance_id is required to save an instance of an Item!')
- if player_name is None:
- os.makedirs(settings.INSTANCE_DIR, 0o755, True)
- filename = os.path.join(settings.INSTANCE_DIR, '%d.json' % self.instance_id)
- else:
- pathname = os.path.join(settings.PLAYER_DIR, player_name[0].capitalize())
- os.makedirs(pathname, 0o755, True)
- filename = os.path.join(pathname, '%s.json' % player_name.capitalize(), '%d.json' % instance_id)
- js = self.to_json(outer_encoder=instance.to_json)
- with open(filename, 'w') as fp:
- fp.write(js)
- if self.inventory:
- for k in self.inventory:
- k.save(is_equipped, in_inventory, player_name)
- @classmethod
- def load(cls, instance_id: int=None, vnum: int=None, player_name: str=None):
- if vnum:
- raise TypeError('Template loading is not yet supported!')
- if not instance_id:
- raise ValueError('An instance_id is required to load an instance of an Item!')
- if player_name is None:
- filename = os.path.join(settings.INSTANCE_DIR, '%d.json' % self.instance_id)
- else:
- pathname = os.path.join(settings.PLAYER_DIR, player_name[0].capitalize())
- target_filename = '%d.json' % instance_id
- for a_path,_,file_list in os.walk(pathname):
- if target_filename in file_list:
- filename = os.path.join(a_path, target_filename)
- break
- with open(filename) as fp:
- js = fp.read()
- obj = Item.from_json(js, outer_encoder=instance.from_json)
- obj.load_inventory(player_name)
- return obj
- def load_inventory(self, player_name: str=None):
- obj_list = []
- for instance_id in self.inventory:
- obj = Item.load(instance_id=instance_id, player_name=player_name)
- if not isinstance(obj, 'Item'):
- raise TypeError('Could not load instance %r!' % instance_id)
- obj.load_inventory(player_name)
- obj_list += obj
- return obj_list
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement