Transportable.py 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from intelligine.cst import TRANSPORTABLE, CARRIED
  2. from intelligine.synergy.object.SynergyObject import SynergyObject
  3. class Transportable(SynergyObject):
  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. self._is_carried = False
  9. def set_carried_by(self, obj):
  10. if obj is not None:
  11. assert self._carried_by is None
  12. self._carried_by = obj
  13. self._context.metas.states.remove(self.get_id(), TRANSPORTABLE)
  14. else:
  15. assert self._carried_by is not None
  16. self._carried_by = None
  17. self._context.metas.states.add(self.get_id(), TRANSPORTABLE)
  18. def is_carried(self):
  19. if self._carried_by:
  20. return True
  21. return False
  22. def get_what_carry(self):
  23. return self
  24. def is_takable(self):
  25. return not self.is_carried()
  26. def set_is_carried(self, is_carried, by_obj):
  27. self._is_carried = bool(is_carried)
  28. if self._is_carried:
  29. self._context.metas.value.set(CARRIED, subject=by_obj.get_id(), value=self.get_id())
  30. else:
  31. self._context.metas.value.unset(CARRIED, subject=by_obj.get_id())