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