|
@@ -1,3 +1,4 @@
|
|
1
|
+from synergine.synergy.event.exception.ActionAborted import ActionAborted
|
1
|
2
|
from intelligine.synergy.event.move.MoveAction import MoveAction
|
2
|
3
|
from intelligine.synergy.object.Food import Food
|
3
|
4
|
from synergine.synergy.event.Action import Action
|
|
@@ -14,20 +15,25 @@ class PutableAction(Action):
|
14
|
15
|
super().__init__(object_id, parameters)
|
15
|
16
|
|
16
|
17
|
def run(self, obj, context, synergy_manager):
|
17
|
|
- position_to_put = self._parameters[PutableEvent.PARAM_PUT_TO]
|
18
|
18
|
obj_transported = obj.get_carried()
|
19
|
19
|
|
20
|
|
- obj_transported.set_carried_by(None)
|
21
|
|
- # TODO: re controle de si posable ? La position a été calculé
|
22
|
|
- # dans le process. Ce qui fait que la situation peut avoir changer.
|
23
|
|
- # Soit: Recalculer d'office BrainPut.cant_put_at.. Soit le recalculer que si le hash
|
24
|
|
- # de ce qu'il y a la a changer ?
|
25
|
|
- obj.put_carry(obj_transported, position_to_put)
|
26
|
|
- context.metas.value.set(CANT_CARRY_STILL, obj.get_id(), 5)
|
|
20
|
+ if not self._parameters[PutableEvent.PARAM_PUT_TO]:
|
|
21
|
+ raise ActionAborted()
|
27
|
22
|
|
28
|
|
- obj.get_brain().get_part(BRAIN_PART_PUT).done(obj_transported)
|
|
23
|
+ for position_to_put in self._parameters[PutableEvent.PARAM_PUT_TO]:
|
29
|
24
|
|
30
|
|
- # TODO: DEBUG
|
31
|
|
- if isinstance(obj_transported, Food):
|
32
|
|
- #obj_transported.set_position((-1, 0, 0))
|
33
|
|
- obj_transported.transform_to_stocked()
|
|
25
|
+ # TODO: re controle de si posable ? La position a été calculé
|
|
26
|
+ # dans le process. Ce qui fait que la situation peut avoir changer.
|
|
27
|
+ # Soit: Recalculer d'office BrainPut.cant_put_at.. Soit le recalculer que si le hash
|
|
28
|
+ # de ce qu'il y a la a changer ?
|
|
29
|
+
|
|
30
|
+ obj_transported.set_carried_by(None)
|
|
31
|
+ obj.put_carry(obj_transported, position_to_put)
|
|
32
|
+ context.metas.value.set(CANT_CARRY_STILL, obj.get_id(), 5)
|
|
33
|
+
|
|
34
|
+ obj.get_brain().get_part(BRAIN_PART_PUT).done(obj_transported)
|
|
35
|
+
|
|
36
|
+ # TODO: DEV
|
|
37
|
+ if isinstance(obj_transported, Food):
|
|
38
|
+ #obj_transported.set_position((-1, 0, 0))
|
|
39
|
+ obj_transported.transform_to_stocked()
|