PutableAction.py 1.3KB

123456789101112131415161718192021222324252627282930313233
  1. from intelligine.synergy.event.move.MoveAction import MoveAction
  2. from intelligine.synergy.object.Food import Food
  3. from synergine.synergy.event.Action import Action
  4. from intelligine.synergy.event.transport.PutableEvent import PutableEvent
  5. from intelligine.cst import CANT_CARRY_STILL, BRAIN_PART_PUT
  6. class PutableAction(Action):
  7. _listen = PutableEvent
  8. _depend = [MoveAction]
  9. def __init__(self, object_id, parameters):
  10. super().__init__(object_id, parameters)
  11. def run(self, obj, context, synergy_manager):
  12. position_to_put = self._parameters[PutableEvent.PARAM_PUT_TO]
  13. obj_transported = obj.get_carried()
  14. obj_transported.set_carried_by(None)
  15. #  TODO: re controle de si posable ? La position a été calculé
  16. # dans le process. Ce qui fait que la situation peut avoir changer.
  17. # Soit: Recalculer d'office BrainPut.cant_put_at.. Soit le recalculer que si le hash
  18. # de ce qu'il y a la a changer ?
  19. obj.put_carry(obj_transported, position_to_put)
  20. context.metas.value.set(CANT_CARRY_STILL, obj.get_id(), 5)
  21. obj.get_brain().get_part(BRAIN_PART_PUT).done(obj_transported)
  22. # TODO: DEBUG
  23. if isinstance(obj_transported, Food):
  24. obj_transported.set_position((-1, 0, 0))