TakeableEvent.py 1.1KB

12345678910111213141516171819202122232425
  1. from synergine.synergy.event.Event import Event
  2. from xyzworld.mechanism.ArroundMechanism import ArroundMechanism
  3. from intelligine.cst import TRANSPORTABLE, CANT_CARRY_STILL, COL_TRANSPORTER_NOT_CARRYING
  4. class TakeableEvent(Event):
  5. concern = COL_TRANSPORTER_NOT_CARRYING
  6. def __init__(self, actions):
  7. super().__init__(actions)
  8. self._mechanism = ArroundMechanism
  9. def _object_match(self, object_id, context, parameters={}):
  10. if context.metas.value.get(CANT_CARRY_STILL, object_id, allow_empty=True):
  11. return False
  12. # TODO: Nettoyer (refact possible sur ces objets ont tel states, comme dans concern)
  13. for obj_near_id in parameters['objects_ids_near']:
  14. if context.metas.states.have(obj_near_id, TRANSPORTABLE):
  15. if 'objects_ids_transportable' not in parameters:
  16. parameters['objects_ids_transportable'] = []
  17. parameters['objects_ids_transportable'].append(obj_near_id)
  18. if 'objects_ids_transportable' not in parameters:
  19. return False
  20. return True