Ver código fonte

combat mode in state

Bastien Sevajol 7 anos atrás
pai
commit
cab804b9d1

+ 6 - 6
maps/001/state1.xml Ver arquivo

8
             <type>opencombat.simulation.subject.ManSubject</type>
8
             <type>opencombat.simulation.subject.ManSubject</type>
9
             <position>72,7</position>
9
             <position>72,7</position>
10
             <direction>90</direction>
10
             <direction>90</direction>
11
-            <mode>standup</mode>
11
+            <combat_mode>COMBAT_MODE_DEFEND</combat_mode>
12
             <properties>
12
             <properties>
13
                 <item>
13
                 <item>
14
                     <key>SELECTION_COLOR_RGB</key>
14
                     <key>SELECTION_COLOR_RGB</key>
28
             <type>opencombat.simulation.subject.ManSubject</type>
28
             <type>opencombat.simulation.subject.ManSubject</type>
29
             <position>72,9</position>
29
             <position>72,9</position>
30
             <direction>90</direction>
30
             <direction>90</direction>
31
-            <mode>standup</mode>
31
+            <combat_mode>COMBAT_MODE_DEFEND</combat_mode>
32
             <properties>
32
             <properties>
33
                 <item>
33
                 <item>
34
                     <key>SELECTION_COLOR_RGB</key>
34
                     <key>SELECTION_COLOR_RGB</key>
48
             <type>opencombat.simulation.subject.ManSubject</type>
48
             <type>opencombat.simulation.subject.ManSubject</type>
49
             <position>72,11</position>
49
             <position>72,11</position>
50
             <direction>90</direction>
50
             <direction>90</direction>
51
-            <mode>standup</mode>
51
+            <combat_mode>COMBAT_MODE_DEFEND</combat_mode>
52
             <properties>
52
             <properties>
53
                 <item>
53
                 <item>
54
                     <key>SELECTION_COLOR_RGB</key>
54
                     <key>SELECTION_COLOR_RGB</key>
68
             <type>opencombat.simulation.subject.ManSubject</type>
68
             <type>opencombat.simulation.subject.ManSubject</type>
69
             <position>58,54</position>
69
             <position>58,54</position>
70
             <direction>270</direction>
70
             <direction>270</direction>
71
-            <mode>hiding</mode>
71
+            <combat_mode>hiding</combat_mode>
72
             <properties>
72
             <properties>
73
                 <item>
73
                 <item>
74
                     <key>SELECTION_COLOR_RGB</key>
74
                     <key>SELECTION_COLOR_RGB</key>
88
             <type>opencombat.simulation.subject.ManSubject</type>
88
             <type>opencombat.simulation.subject.ManSubject</type>
89
             <position>58,56</position>
89
             <position>58,56</position>
90
             <direction>270</direction>
90
             <direction>270</direction>
91
-            <mode>hiding</mode>
91
+            <combat_mode>hiding</combat_mode>
92
             <properties>
92
             <properties>
93
                 <item>
93
                 <item>
94
                     <key>SELECTION_COLOR_RGB</key>
94
                     <key>SELECTION_COLOR_RGB</key>
108
             <type>opencombat.simulation.subject.ManSubject</type>
108
             <type>opencombat.simulation.subject.ManSubject</type>
109
             <position>58,58</position>
109
             <position>58,58</position>
110
             <direction>270</direction>
110
             <direction>270</direction>
111
-            <mode>hiding</mode>
111
+            <combat_mode>hiding</combat_mode>
112
             <properties>
112
             <properties>
113
                 <item>
113
                 <item>
114
                     <key>SELECTION_COLOR_RGB</key>
114
                     <key>SELECTION_COLOR_RGB</key>

+ 2 - 1
opencombat/const.py Ver arquivo

8
 
8
 
9
 SIDE = 'SIDE'
9
 SIDE = 'SIDE'
10
 COMBAT_MODE = 'COMBAT_MODE'
10
 COMBAT_MODE = 'COMBAT_MODE'
11
-COMBAT_MODE_DEFENSE = 'COMBAT_MODE_DEFENSE'
11
+COMBAT_MODE_DEFEND = 'COMBAT_MODE_DEFEND'
12
+COMBAT_MODE_HIDE = 'COMBAT_MODE_HIDE'
12
 
13
 
13
 DE_COLOR = (0, 81, 211)
14
 DE_COLOR = (0, 81, 211)
14
 URSS_COLOR = (204, 0, 0)
15
 URSS_COLOR = (204, 0, 0)

+ 2 - 2
opencombat/simulation/subject.py Ver arquivo

7
 from synergine2_xyz.move.intention import MoveToIntention
7
 from synergine2_xyz.move.intention import MoveToIntention
8
 
8
 
9
 from opencombat.const import COLLECTION_ALIVE
9
 from opencombat.const import COLLECTION_ALIVE
10
-from opencombat.const import COMBAT_MODE_DEFENSE
10
+from opencombat.const import COMBAT_MODE_DEFEND
11
 from opencombat.simulation.base import BaseSubject
11
 from opencombat.simulation.base import BaseSubject
12
 from opencombat.simulation.move import MoveBehaviour
12
 from opencombat.simulation.move import MoveBehaviour
13
 from opencombat.simulation.move import MoveWithRotationBehaviour
13
 from opencombat.simulation.move import MoveWithRotationBehaviour
29
         COLLECTION_ALIVE,
29
         COLLECTION_ALIVE,
30
     ]
30
     ]
31
     visible_opponent_ids = shared.create_self('visible_opponent_ids', lambda: [])
31
     visible_opponent_ids = shared.create_self('visible_opponent_ids', lambda: [])
32
-    combat_mode = shared.create_self('combat_mode', COMBAT_MODE_DEFENSE)
32
+    combat_mode = shared.create_self('combat_mode', COMBAT_MODE_DEFEND)
33
     behaviour_selector_class = TileBehaviourSelector
33
     behaviour_selector_class = TileBehaviourSelector
34
 
34
 
35
     direction = shared.create_self('direction', 0)
35
     direction = shared.create_self('direction', 0)

+ 9 - 0
opencombat/state.py Ver arquivo

67
         subject.direction = float(
67
         subject.direction = float(
68
             get_text_xml_element(subject_element, 'direction'),
68
             get_text_xml_element(subject_element, 'direction'),
69
         )
69
         )
70
+        # TODO BS 2018-06-20: Maybe need apply this mode no ?
71
+        subject.combat_mode = \
72
+            get_text_xml_element(subject_element, 'combat_mode')
70
 
73
 
71
         properties_element = subject_element.find('properties')
74
         properties_element = subject_element.find('properties')
72
         decode_properties_map = self._get_decode_properties_map()
75
         decode_properties_map = self._get_decode_properties_map()
152
             direction_element = etree.SubElement(subject_element, 'direction')
155
             direction_element = etree.SubElement(subject_element, 'direction')
153
             direction_element.text = str(subject.direction)
156
             direction_element.text = str(subject.direction)
154
 
157
 
158
+            combat_mode_element = etree.SubElement(
159
+                subject_element,
160
+                'combat_mode',
161
+            )
162
+            combat_mode_element.text = str(subject.combat_mode)
163
+
155
             properties_element = etree.SubElement(
164
             properties_element = etree.SubElement(
156
                 subject_element,
165
                 subject_element,
157
                 'properties',
166
                 'properties',

+ 4 - 5
opencombat/state.xsd Ver arquivo

23
         </xs:sequence>
23
         </xs:sequence>
24
     </xs:complexType>
24
     </xs:complexType>
25
 
25
 
26
-    <xs:simpleType name="modetype" final="restriction">
26
+    <xs:simpleType name="combatmodetype" final="restriction">
27
         <xs:restriction base="xs:string">
27
         <xs:restriction base="xs:string">
28
-            <xs:enumeration value="standup"/>
29
-            <xs:enumeration value="defending"/>
30
-            <xs:enumeration value="hiding"/>
28
+            <xs:enumeration value="COMBAT_MODE_DEFEND"/>
29
+            <xs:enumeration value="COMBAT_MODE_HIDE"/>
31
         </xs:restriction>
30
         </xs:restriction>
32
     </xs:simpleType>
31
     </xs:simpleType>
33
 
32
 
60
             <xs:element name="type" type="xs:string" minOccurs="1" />
59
             <xs:element name="type" type="xs:string" minOccurs="1" />
61
             <xs:element name="position" type="positiontype" minOccurs="1"/>
60
             <xs:element name="position" type="positiontype" minOccurs="1"/>
62
             <xs:element name="direction" type="directiontype" minOccurs="1"/>
61
             <xs:element name="direction" type="directiontype" minOccurs="1"/>
63
-            <xs:element name="mode" type="modetype" minOccurs="1"/>
62
+            <xs:element name="combat_mode" type="combatmodetype" minOccurs="1"/>
64
             <xs:element name="properties" type="propertiestype" minOccurs="1"/>
63
             <xs:element name="properties" type="propertiestype" minOccurs="1"/>
65
         </xs:sequence>
64
         </xs:sequence>
66
     </xs:complexType>
65
     </xs:complexType>

+ 2 - 2
tests/fixtures/state_error_schema.xml Ver arquivo

8
             <type>opencombat.simulation.subject.ManSubject</type>
8
             <type>opencombat.simulation.subject.ManSubject</type>
9
             <position>1,1</position>
9
             <position>1,1</position>
10
             <direction>90</direction>
10
             <direction>90</direction>
11
-            <mode>standup</mode>
11
+            <combat_mode>COMBAT_MODE_DEFEND</combat_mode>
12
         </subject>
12
         </subject>
13
         <subjectFOO>
13
         <subjectFOO>
14
             <type>opencombat.simulation.subject.ManSubject</type>
14
             <type>opencombat.simulation.subject.ManSubject</type>
15
             <position>10,10</position>
15
             <position>10,10</position>
16
             <direction>270</direction>
16
             <direction>270</direction>
17
-            <mode>hiding</mode>
17
+            <combat_mode>hiding</combat_mode>
18
         </subjectFOO>
18
         </subjectFOO>
19
     </subjects>
19
     </subjects>
20
 </state>
20
 </state>

+ 2 - 2
tests/fixtures/state_ok.xml Ver arquivo

8
             <type>opencombat.simulation.subject.ManSubject</type>
8
             <type>opencombat.simulation.subject.ManSubject</type>
9
             <position>1,1</position>
9
             <position>1,1</position>
10
             <direction>90</direction>
10
             <direction>90</direction>
11
-            <mode>standup</mode>
11
+            <combat_mode>COMBAT_MODE_DEFEND</combat_mode>
12
             <properties>
12
             <properties>
13
                 <item>
13
                 <item>
14
                     <key>SELECTION_COLOR_RGB</key>
14
                     <key>SELECTION_COLOR_RGB</key>
28
             <type>opencombat.simulation.subject.ManSubject</type>
28
             <type>opencombat.simulation.subject.ManSubject</type>
29
             <position>10,10</position>
29
             <position>10,10</position>
30
             <direction>270</direction>
30
             <direction>270</direction>
31
-            <mode>hiding</mode>
31
+            <combat_mode>COMBAT_MODE_HIDE</combat_mode>
32
             <properties>
32
             <properties>
33
                 <item>
33
                 <item>
34
                     <key>SELECTION_COLOR_RGB</key>
34
                     <key>SELECTION_COLOR_RGB</key>

+ 5 - 0
tests/test_state.py Ver arquivo

111
     assert 90.0 == state.subjects[0].direction
111
     assert 90.0 == state.subjects[0].direction
112
     assert 270.0 == state.subjects[1].direction
112
     assert 270.0 == state.subjects[1].direction
113
 
113
 
114
+    assert 'COMBAT_MODE_DEFEND' == state.subjects[0].combat_mode
115
+    assert 'COMBAT_MODE_HIDE' == state.subjects[1].combat_mode
116
+
114
     assert {
117
     assert {
115
                'SELECTION_COLOR_RGB': (204, 0, 0),
118
                'SELECTION_COLOR_RGB': (204, 0, 0),
116
                'FLAG': 'FLAG_URSS',
119
                'FLAG': 'FLAG_URSS',
139
             <type>opencombat.simulation.subject.ManSubject</type>
142
             <type>opencombat.simulation.subject.ManSubject</type>
140
             <position>10,11</position>
143
             <position>10,11</position>
141
             <direction>42</direction>
144
             <direction>42</direction>
145
+            <combat_mode>COMBAT_MODE_DEFEND</combat_mode>
142
             <properties>
146
             <properties>
143
                 <item>
147
                 <item>
144
                     <key>SELECTION_COLOR_RGB</key>
148
                     <key>SELECTION_COLOR_RGB</key>
158
             <type>opencombat.simulation.subject.ManSubject</type>
162
             <type>opencombat.simulation.subject.ManSubject</type>
159
             <position>16,8</position>
163
             <position>16,8</position>
160
             <direction>197</direction>
164
             <direction>197</direction>
165
+            <combat_mode>COMBAT_MODE_DEFEND</combat_mode>
161
             <properties>
166
             <properties>
162
                 <item>
167
                 <item>
163
                     <key>SELECTION_COLOR_RGB</key>
168
                     <key>SELECTION_COLOR_RGB</key>