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,29 +10,19 @@ from intelligine.simulation.object.brain.part.transport.AntTakeBrainPart import
10 10
 
11 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 20
     def __init__(self, context, host):
18 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 22
         self._movement_mode = MOVE_MODE_EXPLO
24 23
         self._distance_from_objective = 0  # TODO rename: distance_since_objective
25 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 26
     def switch_to_mode(self, mode):
37 27
         self._movement_mode = mode
38 28
         self._update_pheromone_gland(mode)

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

@@ -4,13 +4,18 @@ from intelligine.cst import BRAIN_SCHEMA
4 4
 
5 5
 class Brain():
6 6
 
7
-    _brain_part_class = {}
7
+    _brain_parts = {}
8 8
 
9 9
     def __init__(self, context, host):
10 10
         self._context = context
11 11
         self._host = host
12 12
         self._schema = {}
13 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 20
     def _set_brain_part(self, name, brain_part, replace=False):
16 21
         if name in self._parts and not replace:

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

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

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

@@ -6,7 +6,7 @@ from intelligine.cst import MOVE_MODE_EXPLO, MOVE_MODE, TYPE_RESOURCE_TRANSFORMA
6 6
 
7 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 10
     _mode_matches = {
11 11
         MOVE_MODE_EXPLO: [TYPE_RESOURCE_TRANSFORMABLE],
12 12
         MOVE_MODE_NURSE: [TYPE_NURSERY]