PutableAction.py 1.0KB

123456789101112131415161718192021222324252627282930
  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 ? (5 max etc)
  16. obj.put_carry(obj_transported, position_to_put)
  17. context.metas.value.set(CANT_CARRY_STILL, obj.get_id(), 5)
  18. obj.get_brain().get_part(BRAIN_PART_PUT).done(obj_transported)
  19. # TODO: DEBUG
  20. if isinstance(obj_transported, Food):
  21. obj_transported.set_position((-1, 0, 0))