1 /* Copyright (C) 2018 Wildfire Games.
2  * This file is part of 0 A.D.
3  *
4  * 0 A.D. is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * 0 A.D. is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with 0 A.D.  If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 // MESSAGE: message types
19 // INTERFACE: component interface types
20 // COMPONENT: component types
21 
22 // Components intended only for use in test cases:
23 // (The tests rely on the enum IDs, so don't change the order of these)
24 INTERFACE(Test1)
25 COMPONENT(Test1A)
26 COMPONENT(Test1B)
27 COMPONENT(Test1Scripted)
28 INTERFACE(Test2)
29 COMPONENT(Test2A)
30 COMPONENT(Test2Scripted)
31 
32 // Message types:
33 MESSAGE(TurnStart)
34 MESSAGE(Update)
35 MESSAGE(Update_MotionFormation)
36 MESSAGE(Update_MotionUnit)
37 MESSAGE(Update_Final)
38 MESSAGE(Interpolate) // non-deterministic (use with caution)
39 MESSAGE(RenderSubmit) // non-deterministic (use with caution)
40 MESSAGE(ProgressiveLoad) // non-deterministic (use with caution)
41 MESSAGE(Deserialized) // non-deterministic (use with caution)
42 MESSAGE(Create)
43 MESSAGE(Destroy)
44 MESSAGE(OwnershipChanged)
45 MESSAGE(PositionChanged)
46 MESSAGE(InterpolatedPositionChanged)
47 MESSAGE(TerritoryPositionChanged)
48 MESSAGE(MotionChanged)
49 MESSAGE(RangeUpdate)
50 MESSAGE(TerrainChanged)
51 MESSAGE(VisibilityChanged)
52 MESSAGE(WaterChanged)
53 MESSAGE(ObstructionMapShapeChanged)
54 MESSAGE(TerritoriesChanged)
55 MESSAGE(PathResult)
56 MESSAGE(ValueModification)
57 MESSAGE(TemplateModification)
58 MESSAGE(VisionRangeChanged)
59 MESSAGE(VisionSharingChanged)
60 MESSAGE(MinimapPing)
61 MESSAGE(CinemaPathEnded)
62 MESSAGE(CinemaQueueEnded)
63 MESSAGE(PlayerColorChanged)
64 
65 // TemplateManager must come before all other (non-test) components,
66 // so that it is the first to be (de)serialized
67 INTERFACE(TemplateManager)
68 COMPONENT(TemplateManager)
69 
70 // Special component for script component types with no native interface
71 INTERFACE(UnknownScript)
72 COMPONENT(UnknownScript)
73 
74 // In alphabetical order:
75 
76 INTERFACE(AIInterface)
77 COMPONENT(AIInterfaceScripted)
78 
79 INTERFACE(AIManager)
80 COMPONENT(AIManager)
81 
82 INTERFACE(CinemaManager)
83 COMPONENT(CinemaManager)
84 
85 INTERFACE(CommandQueue)
86 COMPONENT(CommandQueue)
87 
88 INTERFACE(Decay)
89 COMPONENT(Decay)
90 
91 INTERFACE(Fogging)
92 COMPONENT(FoggingScripted)
93 
94 // Note: The VisualActor component relies on this component being initialized before itself, in order to support using
95 // an entity's footprint shape for the selection boxes. This dependency is not strictly necessary, but it does avoid
96 // some extra plumbing code to set up on-demand initialization. If you find yourself forced to break this dependency,
97 // see VisualActor's Init method for a description of how you can avoid it.
98 INTERFACE(Footprint)
99 COMPONENT(Footprint)
100 
101 INTERFACE(GuiInterface)
102 COMPONENT(GuiInterfaceScripted)
103 
104 INTERFACE(Identity)
105 COMPONENT(IdentityScripted)
106 
107 INTERFACE(Minimap)
108 COMPONENT(Minimap)
109 
110 INTERFACE(Mirage)
111 COMPONENT(MirageScripted)
112 
113 INTERFACE(Motion)
114 COMPONENT(MotionBall)
115 COMPONENT(MotionScripted)
116 
117 INTERFACE(Obstruction)
118 COMPONENT(Obstruction)
119 
120 INTERFACE(ObstructionManager)
121 COMPONENT(ObstructionManager)
122 
123 INTERFACE(OverlayRenderer)
124 COMPONENT(OverlayRenderer)
125 
126 INTERFACE(Ownership)
127 COMPONENT(Ownership)
128 
129 INTERFACE(ParticleManager)
130 COMPONENT(ParticleManager)
131 
132 INTERFACE(Pathfinder)
133 COMPONENT(Pathfinder)
134 
135 INTERFACE(Player)
136 COMPONENT(PlayerScripted)
137 
138 INTERFACE(PlayerManager)
139 COMPONENT(PlayerManagerScripted)
140 
141 INTERFACE(Position)
142 COMPONENT(Position) // must be before VisualActor
143 
144 INTERFACE(ProjectileManager)
145 COMPONENT(ProjectileManager)
146 
147 INTERFACE(RallyPoint)
148 COMPONENT(RallyPointScripted)
149 
150 INTERFACE(RallyPointRenderer)
151 COMPONENT(RallyPointRenderer)
152 
153 INTERFACE(RangeManager)
154 COMPONENT(RangeManager)
155 
156 INTERFACE(RangeOverlayRenderer)
157 COMPONENT(RangeOverlayRenderer)
158 
159 INTERFACE(Selectable)
160 COMPONENT(Selectable)
161 
162 INTERFACE(Settlement)
163 COMPONENT(SettlementScripted)
164 
165 INTERFACE(Sound)
166 COMPONENT(SoundScripted)
167 
168 INTERFACE(SoundManager)
169 COMPONENT(SoundManager)
170 
171 INTERFACE(ValueModificationManager)
172 COMPONENT(ValueModificationManagerScripted)
173 
174 INTERFACE(Terrain)
175 COMPONENT(Terrain)
176 
177 INTERFACE(TerritoryDecayManager)
178 COMPONENT(TerritoryDecayManagerScripted)
179 
180 INTERFACE(TerritoryInfluence)
181 COMPONENT(TerritoryInfluence)
182 
183 INTERFACE(TerritoryManager)
184 COMPONENT(TerritoryManager)
185 
186 INTERFACE(UnitMotion)
187 COMPONENT(UnitMotion) // must be after Obstruction
188 COMPONENT(UnitMotionScripted)
189 
190 INTERFACE(UnitRenderer)
191 COMPONENT(UnitRenderer)
192 
193 INTERFACE(Visibility)
194 COMPONENT(VisibilityScripted)
195 
196 INTERFACE(Vision)
197 COMPONENT(Vision)
198 
199 // Note: this component relies on the Footprint component being initialized before itself. See the comments above for
200 // the Footprint component to find out why.
201 INTERFACE(Visual)
202 COMPONENT(VisualActor) // must be after Ownership (dependency in Deserialize) and Vision (dependency in Init)
203 
204 INTERFACE(WaterManager)
205 COMPONENT(WaterManager)
206