Browse Source

refactorise brain parts populate

Bastien Sevajol 9 years ago
parent
commit
4c3829a3f8

+ 6 - 16
intelligine/simulation/object/brain/AntBrain.py View File

10
 
10
 
11
 class AntBrain(Brain):
11
 class AntBrain(Brain):
12
 
12
 
13
-    _brain_part_move_class = AntMoveBrainPart
14
-    _brain_part_take_class = AntTakeBrainPart
15
-    _brain_part_put_class = AntPutBrainPart
13
+    # TODO: methode __init_ pour la classe ? Pour surcharger ici.
14
+    _brain_parts = {
15
+        BRAIN_PART_MOVE: AntMoveBrainPart,
16
+        BRAIN_PART_TAKE: AntTakeBrainPart,
17
+        BRAIN_PART_PUT: AntPutBrainPart
18
+    }
16
 
19
 
17
     def __init__(self, context, host):
20
     def __init__(self, context, host):
18
         super().__init__(context, host)
21
         super().__init__(context, host)
19
-        # TODO: Gerer les BrainPart avec un dictionnaire ?
20
-        self._set_brain_part(BRAIN_PART_MOVE, self._get_move_brain_part_instance())
21
-        self._set_brain_part(BRAIN_PART_TAKE, self._get_take_brain_part_instance())
22
-        self._set_brain_part(BRAIN_PART_PUT, self._get_put_brain_part_instance())
23
         self._movement_mode = MOVE_MODE_EXPLO
22
         self._movement_mode = MOVE_MODE_EXPLO
24
         self._distance_from_objective = 0  # TODO rename: distance_since_objective
23
         self._distance_from_objective = 0  # TODO rename: distance_since_objective
25
         self._pheromone_searching = PHEROMON_DIR_EXPLO
24
         self._pheromone_searching = PHEROMON_DIR_EXPLO
26
 
25
 
27
-    def _get_move_brain_part_instance(self):
28
-        return self._brain_part_move_class()
29
-
30
-    def _get_take_brain_part_instance(self):
31
-        return self._brain_part_take_class()
32
-
33
-    def _get_put_brain_part_instance(self):
34
-        return self._brain_part_put_class()
35
-
36
     def switch_to_mode(self, mode):
26
     def switch_to_mode(self, mode):
37
         self._movement_mode = mode
27
         self._movement_mode = mode
38
         self._update_pheromone_gland(mode)
28
         self._update_pheromone_gland(mode)

+ 6 - 1
intelligine/simulation/object/brain/Brain.py View File

4
 
4
 
5
 class Brain():
5
 class Brain():
6
 
6
 
7
-    _brain_part_class = {}
7
+    _brain_parts = {}
8
 
8
 
9
     def __init__(self, context, host):
9
     def __init__(self, context, host):
10
         self._context = context
10
         self._context = context
11
         self._host = host
11
         self._host = host
12
         self._schema = {}
12
         self._schema = {}
13
         self._parts = {}
13
         self._parts = {}
14
+        self._init_parts()
15
+
16
+    def _init_parts(self):
17
+        for brain_part_name in self._brain_parts:
18
+            self._set_brain_part(brain_part_name, self._brain_parts[brain_part_name](self))
14
 
19
 
15
     def _set_brain_part(self, name, brain_part, replace=False):
20
     def _set_brain_part(self, name, brain_part, replace=False):
16
         if name in self._parts and not replace:
21
         if name in self._parts and not replace:

+ 3 - 0
intelligine/simulation/object/brain/part/BrainPart.py View File

1
 class BrainPart():
1
 class BrainPart():
2
 
2
 
3
+    def __init__(self, host_brain):
4
+        self._host_brain = host_brain
5
+
3
     def done(self, obj, context):
6
     def done(self, obj, context):
4
         pass
7
         pass

+ 1 - 1
intelligine/simulation/object/brain/part/transport/AntTakeBrainPart.py View File

6
 
6
 
7
 class AntTakeBrainPart(TakeBrainPart):
7
 class AntTakeBrainPart(TakeBrainPart):
8
 
8
 
9
-    # TODO: methode __nit_ pour la classe ? vt mieux surcharger !
9
+    # TODO: methode __init_ pour la classe ? Pour surcharger ici.
10
     _mode_matches = {
10
     _mode_matches = {
11
         MOVE_MODE_EXPLO: [TYPE_RESOURCE_TRANSFORMABLE],
11
         MOVE_MODE_EXPLO: [TYPE_RESOURCE_TRANSFORMABLE],
12
         MOVE_MODE_NURSE: [TYPE_NURSERY]
12
         MOVE_MODE_NURSE: [TYPE_NURSERY]