1
2
3
4
5
6
7
8
9
10
11
12
13 package cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages;
14
15 import java.util.*;import javax.vecmath.*;import cz.cuni.amis.pogamut.base.communication.messages.*;import cz.cuni.amis.pogamut.base.communication.worldview.*;import cz.cuni.amis.pogamut.base.communication.worldview.event.*;import cz.cuni.amis.pogamut.base.communication.worldview.object.*;import cz.cuni.amis.pogamut.multi.communication.worldview.object.*;import cz.cuni.amis.pogamut.base.communication.translator.event.*;import cz.cuni.amis.pogamut.multi.communication.translator.event.*;import cz.cuni.amis.pogamut.base3d.worldview.object.*;import cz.cuni.amis.pogamut.base3d.worldview.object.event.*;import cz.cuni.amis.pogamut.ut2004.communication.messages.*;import cz.cuni.amis.pogamut.ut2004.communication.worldview.objects.*;import cz.cuni.amis.pogamut.ut2004multi.communication.worldview.objects.*;import cz.cuni.amis.pogamut.ut2004.communication.translator.itemdescriptor.*;import cz.cuni.amis.pogamut.ut2004.communication.messages.ItemType.Category;import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;import cz.cuni.amis.utils.exception.*;import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldObjectUpdateResult.Result;import cz.cuni.amis.utils.SafeEquals;import cz.cuni.amis.pogamut.base.agent.*;import cz.cuni.amis.pogamut.multi.agent.*;import cz.cuni.amis.pogamut.multi.communication.worldview.property.*;import cz.cuni.amis.pogamut.ut2004multi.communication.worldview.property.*;import cz.cuni.amis.utils.token.*;import cz.cuni.amis.utils.*;
16
17 public class UT2004SharedObjectCreator {
18
19 public static interface ISharedObjectCreator<T extends ICompositeWorldObject>
20 {
21 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c);
22 }
23
24
25 public static class AliveMessageSharedCreator implements ISharedObjectCreator<AliveMessage>
26 {
27 @Override
28 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
29 return new AliveMessageSharedImpl(id, c);
30 }
31 }
32
33 public static class AutoTraceRaySharedCreator implements ISharedObjectCreator<AutoTraceRay>
34 {
35 @Override
36 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
37 return new AutoTraceRaySharedImpl(id, c);
38 }
39 }
40
41 public static class BombInfoSharedCreator implements ISharedObjectCreator<BombInfo>
42 {
43 @Override
44 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
45 return new BombInfoSharedImpl(id, c);
46 }
47 }
48
49 public static class ConfigChangeSharedCreator implements ISharedObjectCreator<ConfigChange>
50 {
51 @Override
52 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
53 return new ConfigChangeSharedImpl(id, c);
54 }
55 }
56
57 public static class FlagInfoSharedCreator implements ISharedObjectCreator<FlagInfo>
58 {
59 @Override
60 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
61 return new FlagInfoSharedImpl(id, c);
62 }
63 }
64
65 public static class GameInfoSharedCreator implements ISharedObjectCreator<GameInfo>
66 {
67 @Override
68 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
69 return new GameInfoSharedImpl(id, c);
70 }
71 }
72
73 public static class IncomingProjectileSharedCreator implements ISharedObjectCreator<IncomingProjectile>
74 {
75 @Override
76 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
77 return new IncomingProjectileSharedImpl(id, c);
78 }
79 }
80
81 public static class InitedMessageSharedCreator implements ISharedObjectCreator<InitedMessage>
82 {
83 @Override
84 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
85 return new InitedMessageSharedImpl(id, c);
86 }
87 }
88
89 public static class ItemSharedCreator implements ISharedObjectCreator<Item>
90 {
91 @Override
92 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
93 return new ItemSharedImpl(id, c);
94 }
95 }
96
97 public static class MoverSharedCreator implements ISharedObjectCreator<Mover>
98 {
99 @Override
100 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
101 return new MoverSharedImpl(id, c);
102 }
103 }
104
105 public static class MyInventorySharedCreator implements ISharedObjectCreator<MyInventory>
106 {
107 @Override
108 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
109 return new MyInventorySharedImpl(id, c);
110 }
111 }
112
113 public static class NavPointSharedCreator implements ISharedObjectCreator<NavPoint>
114 {
115 @Override
116 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
117 return new NavPointSharedImpl(id, c);
118 }
119 }
120
121 public static class PlayerSharedCreator implements ISharedObjectCreator<Player>
122 {
123 @Override
124 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
125 return new PlayerSharedImpl(id, c);
126 }
127 }
128
129 public static class SelfSharedCreator implements ISharedObjectCreator<Self>
130 {
131 @Override
132 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
133 return new SelfSharedImpl(id, c);
134 }
135 }
136
137 public static class TeamScoreSharedCreator implements ISharedObjectCreator<TeamScore>
138 {
139 @Override
140 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
141 return new TeamScoreSharedImpl(id, c);
142 }
143 }
144
145 public static class VehicleSharedCreator implements ISharedObjectCreator<Vehicle>
146 {
147 @Override
148 public ISharedWorldObject create(WorldObjectId id, Collection<ISharedProperty> c) {
149 return new VehicleSharedImpl(id, c);
150 }
151 }
152
153
154 private static HashMap<Class, ISharedObjectCreator> map = new HashMap<Class, ISharedObjectCreator>();
155
156 static {
157
158 map.put(
159 AliveMessage
160 .class,
161 new AliveMessageSharedCreator()
162 );
163
164 map.put(
165 AutoTraceRay
166 .class,
167 new AutoTraceRaySharedCreator()
168 );
169
170 map.put(
171 BombInfo
172 .class,
173 new BombInfoSharedCreator()
174 );
175
176 map.put(
177 ConfigChange
178 .class,
179 new ConfigChangeSharedCreator()
180 );
181
182 map.put(
183 FlagInfo
184 .class,
185 new FlagInfoSharedCreator()
186 );
187
188 map.put(
189 GameInfo
190 .class,
191 new GameInfoSharedCreator()
192 );
193
194 map.put(
195 IncomingProjectile
196 .class,
197 new IncomingProjectileSharedCreator()
198 );
199
200 map.put(
201 InitedMessage
202 .class,
203 new InitedMessageSharedCreator()
204 );
205
206 map.put(
207 Item
208 .class,
209 new ItemSharedCreator()
210 );
211
212 map.put(
213 Mover
214 .class,
215 new MoverSharedCreator()
216 );
217
218 map.put(
219 MyInventory
220 .class,
221 new MyInventorySharedCreator()
222 );
223
224 map.put(
225 NavPoint
226 .class,
227 new NavPointSharedCreator()
228 );
229
230 map.put(
231 Player
232 .class,
233 new PlayerSharedCreator()
234 );
235
236 map.put(
237 Self
238 .class,
239 new SelfSharedCreator()
240 );
241
242 map.put(
243 TeamScore
244 .class,
245 new TeamScoreSharedCreator()
246 );
247
248 map.put(
249 Vehicle
250 .class,
251 new VehicleSharedCreator()
252 );
253
254 }
255
256 public static ISharedWorldObject create(Class msgClass, WorldObjectId objectId, Collection<ISharedProperty> properties )
257 {
258 NullCheck.check(msgClass, "msgClass");
259 NullCheck.check(objectId, "objectId");
260 NullCheck.check(properties, "properties");
261
262 ISharedObjectCreator creator = map.get(msgClass);
263 if (creator == null) {
264 throw new PogamutException("There is no shared obejct creator for class " + msgClass + ".", UT2004SharedObjectCreator.class);
265 }
266 return creator.create(objectId, properties);
267 }
268 }
269