Transportable.py 949B

12345678910111213141516171819202122232425262728293031
  1. from synergine_xyz.SynergyObject import SynergyObject as XyzSynergyObject
  2. from intelligine.cst import TRANSPORTABLE
  3. class Transportable(XyzSynergyObject):
  4. def __init__(self, collection, context):
  5. super().__init__(collection, context)
  6. self._carried_by = None
  7. context.metas.states.add(self.get_id(), TRANSPORTABLE)
  8. def set_carried_by(self, obj):
  9. if obj is not None:
  10. assert self._carried_by is None
  11. self._carried_by = obj
  12. self._context.metas.states.remove(self.get_id(), TRANSPORTABLE)
  13. else:
  14. assert self._carried_by is not None
  15. self._carried_by = None
  16. self._context.metas.states.add(self.get_id(), TRANSPORTABLE)
  17. def is_carried(self):
  18. if self._carried_by:
  19. return True
  20. return False
  21. def get_what_carry(self):
  22. return self
  23. def is_takable(self):
  24. return not self.is_carried()