TakeableEvent.py 966B

1234567891011121314151617181920212223
  1. from synergine.core.exceptions import NotConcernedEvent
  2. from intelligine.synergy.event.src.NearEvent import NearEvent
  3. from xyzworld.mechanism.ArroundMechanism import ArroundMechanism
  4. from intelligine.cst import TRANSPORTABLE, CANT_CARRY_STILL, COL_TRANSPORTER_NOT_CARRYING
  5. class TakeableEvent(NearEvent):
  6. concern = COL_TRANSPORTER_NOT_CARRYING
  7. _near_name = 'objects_ids_transportable'
  8. _near_map = lambda self, near_object_id, context: context.metas.states.have(near_object_id, TRANSPORTABLE)
  9. def __init__(self, actions):
  10. super().__init__(actions)
  11. self._mechanism = ArroundMechanism
  12. def _prepare(self, object_id, context, parameters={}):
  13. if context.metas.value.get(CANT_CARRY_STILL, object_id, allow_empty=True):
  14. raise NotConcernedEvent()
  15. self.map(context, parameters, stop_at_first=True)
  16. if self._near_name not in parameters:
  17. raise NotConcernedEvent()
  18. return parameters