1 package cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages;
2
3
4 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.*;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public abstract class BombInfo
29 extends
30 InfoMessage
31 implements IWorldEvent, IWorldChangeEvent, ICompositeWorldObject
32
33 ,IGBViewable
34 {
35
36
37 public static final String PROTOTYPE =
38 "BOM {Id unreal_id} {Velocity 0,0,0} {Location 0,0,0} {Holder unreal_id} {HolderTeam 0} {Visible False} {State text} ";
39
40
41
42
43
44
45 public BombInfo()
46 {
47 }
48
49
50
51
52 protected long SimTime;
53
54
55
56
57 @Override
58 public long getSimTime() {
59 return SimTime;
60 }
61
62
63
64
65 protected void setSimTime(long SimTime) {
66 this.SimTime = SimTime;
67 }
68
69
70
71
72
73
74 public abstract UnrealId getId()
75 ;
76
77
78
79
80
81
82 public abstract Velocity getVelocity()
83 ;
84
85
86
87
88
89
90
91 public abstract Location getLocation()
92 ;
93
94
95
96
97
98
99
100
101 public abstract UnrealId getHolder()
102 ;
103
104
105
106
107
108
109 public abstract Integer getHolderTeam()
110 ;
111
112
113
114
115 public abstract boolean isVisible()
116 ;
117
118
119
120
121
122
123
124 public abstract String getState()
125 ;
126
127 @Override
128 public IWorldObjectUpdatedEvent createDisappearEvent() {
129 return new ObjectDisappeared(this, getSimTime());
130 }
131
132 public static class ObjectDisappeared implements IWorldObjectUpdatedEvent
133 {
134
135 public ObjectDisappeared(BombInfo obj, long time) {
136 this.obj = obj;
137 this.time = time;
138 }
139
140 private BombInfo obj;
141 private long time;
142
143 @Override
144 public WorldObjectId getId() {
145 return obj.getId();
146 }
147
148
149
150
151 @Override
152 public long getSimTime() {
153 return time;
154 }
155
156 @Override
157 public IWorldObjectUpdateResult<IWorldObject> update(IWorldObject obj) {
158 if (obj == null) {
159 throw new PogamutException("Can't 'disappear' null!", this);
160 }
161 if (!(obj instanceof BombInfoMessage)) {
162 throw new PogamutException("Can't update different class than BombInfoMessage, got class " + obj.getClass().getSimpleName() + "!", this);
163 }
164 BombInfoMessage toUpdate = (BombInfoMessage)obj;
165 if (toUpdate.Visible) {
166 toUpdate.Visible = false;
167 return new IWorldObjectUpdateResult.WorldObjectUpdateResult(IWorldObjectUpdateResult.Result.UPDATED, obj);
168 } else {
169 return new IWorldObjectUpdateResult.WorldObjectUpdateResult(IWorldObjectUpdateResult.Result.SAME, obj);
170 }
171 }
172
173 }
174
175
176
177 public static class BombInfoUpdate
178 extends GBObjectUpdate implements ICompositeWorldObjectUpdatedEvent, IGBWorldObjectEvent {
179 private BombInfo object;
180 private long time;
181 private ITeamId teamId;
182
183 public BombInfoUpdate
184 (BombInfo source, long eventTime, ITeamId teamId) {
185 this.object = source;
186 this.time = eventTime;
187 this.teamId = teamId;
188 }
189
190
191
192
193 @Override
194 public long getSimTime() {
195 return time;
196 }
197
198 @Override
199 public IWorldObject getObject() {
200 return object;
201 }
202
203 @Override
204 public WorldObjectId getId() {
205 return object.getId();
206 }
207
208 @Override
209 public ILocalWorldObjectUpdatedEvent getLocalEvent() {
210 return new BombInfoLocalImpl.BombInfoLocalUpdate
211 ((BombInfoLocal)object.getLocal(), time);
212 }
213
214 @Override
215 public ISharedWorldObjectUpdatedEvent getSharedEvent() {
216 return new BombInfoSharedImpl.BombInfoSharedUpdate
217 ((BombInfoShared)object.getShared(), time, teamId);
218 }
219
220 @Override
221 public IStaticWorldObjectUpdatedEvent getStaticEvent() {
222 return new BombInfoStaticImpl.BombInfoStaticUpdate
223 ((BombInfoStatic)object.getStatic(), time);
224 }
225
226 }
227
228
229 public String toString() {
230 return
231 super.toString() + "[" +
232
233 "Id = " + String.valueOf(getId()
234 ) + " | " +
235
236 "Velocity = " + String.valueOf(getVelocity()
237 ) + " | " +
238
239 "Location = " + String.valueOf(getLocation()
240 ) + " | " +
241
242 "Holder = " + String.valueOf(getHolder()
243 ) + " | " +
244
245 "HolderTeam = " + String.valueOf(getHolderTeam()
246 ) + " | " +
247
248 "Visible = " + String.valueOf(isVisible()
249 ) + " | " +
250
251 "State = " + String.valueOf(getState()
252 ) + " | " +
253
254 "]";
255 }
256
257
258 public String toHtmlString() {
259 return super.toString() + "[<br/>" +
260
261 "<b>Id</b> = " + String.valueOf(getId()
262 ) + " <br/> " +
263
264 "<b>Velocity</b> = " + String.valueOf(getVelocity()
265 ) + " <br/> " +
266
267 "<b>Location</b> = " + String.valueOf(getLocation()
268 ) + " <br/> " +
269
270 "<b>Holder</b> = " + String.valueOf(getHolder()
271 ) + " <br/> " +
272
273 "<b>HolderTeam</b> = " + String.valueOf(getHolderTeam()
274 ) + " <br/> " +
275
276 "<b>Visible</b> = " + String.valueOf(isVisible()
277 ) + " <br/> " +
278
279 "<b>State</b> = " + String.valueOf(getState()
280 ) + " <br/> " +
281
282 "<br/>]";
283 }
284
285 public String toJsonLiteral() {
286 return "bombinfo( "
287 +
288 (getId()
289 == null ? "null" :
290 "\"" + getId()
291 .getStringId() + "\""
292 )
293 + ", " +
294 (getVelocity()
295 == null ? "null" :
296 "[" + getVelocity()
297 .getX() + ", " + getVelocity()
298 .getY() + ", " + getVelocity()
299 .getZ() + "]"
300 )
301 + ", " +
302 (getLocation()
303 == null ? "null" :
304 "[" + getLocation()
305 .getX() + ", " + getLocation()
306 .getY() + ", " + getLocation()
307 .getZ() + "]"
308 )
309 + ", " +
310 (getHolder()
311 == null ? "null" :
312 "\"" + getHolder()
313 .getStringId() + "\""
314 )
315 + ", " +
316 String.valueOf(getHolderTeam()
317 )
318 + ", " +
319 String.valueOf(isVisible()
320 )
321 + ", " +
322 (getState()
323 == null ? "null" :
324 "\"" + getState()
325 + "\""
326 )
327
328 + ")";
329 }
330
331
332
333
334
335
336
337
338
339
340 }
341