View Javadoc

1   package cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages;
2    		
3    		// --- IMPORTS FROM /messages/settings/javasettings/javaimport BEGIN
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   		// --- IMPORTS FROM /messages/settings/javasettings/javaimport END
6   		
7   		
8   		// --- IMPORTS FROM extra/code/java/javapart/classcategory[@name='all'] BEGIN
9   				
10  		// --- IMPORTS FROM extra/code/java/javapart/classcategory[@name='all'] END
11  		
12  		// --- IMPORTS FROM extra/code/java/javapart/classcategory[@name=base]+classtype[@name=message] BEGIN
13  		
14  		// --- IMPORTS FROM extra/code/java/javapart/classcategory[@name=base]+classtype[@name=message] END
15      
16   		/**
17           *  
18               				Implementation of the GameBots2004 message NAV contains also its Local/Shared/Static subpart class definitions..  
19              			
20           *
21           *  <p></p><p></p>
22           *  Complete message documentation:               
23           *  
24  		Synchronous message. NavPoint carries information about UT
25  		navigation point - location, reachability... Also some item can
26  		be respawned at this point. Or some additional information can
27  		be stored here (if it is an ambush point, or sniper point..).
28  	
29           */
30   	public class NavPointMessage   
31    				extends 
32    				NavPoint
33    						implements IWorldObjectUpdatedEvent, ICompositeWorldObjectUpdatedEvent
34    						
35  	    {
36   	
37      	
38      	
39      	/**
40      	 * Parameter-less contructor for the message.
41      	 */
42  		public NavPointMessage()
43  		{
44  		}
45  	
46      	
47      	
48      	
49      	/**
50  		 * Creates new instance of the message NavPoint.
51  		 * 
52  		Synchronous message. NavPoint carries information about UT
53  		navigation point - location, reachability... Also some item can
54  		be respawned at this point. Or some additional information can
55  		be stored here (if it is an ambush point, or sniper point..).
56  	
57  		 * Corresponding GameBots message
58  		 *   
59  		 *   is
60  		 *   NAV.
61  		 * 
62   	  	 * 
63  		 *   
64  		 *     @param Id 
65  			A unique Id of this navigation point assigned by the game.
66  		
67  		 *   
68  		 * 
69  		 *   
70  		 *     @param Location Location of navigation point.
71  		 *   
72  		 * 
73  		 *   
74  		 *     @param Velocity 
75  			Velocity of the navigation point (if the navigation point is
76  			currently moving). Not sent at the moment.
77  		
78  		 *   
79  		 * 
80  		 *   
81  		 *     @param Visible 
82  			If the point is in the field of view of the bot.
83  		
84  		 *   
85  		 * 
86  		 *   
87  		 *     @param Item 
88  			Unique Id of the respawned item (the item respawns at this
89  			point). Not sent if point is not an inventory spot. Sent only in HandShake.
90  		
91  		 *   
92  		 * 
93  		 *   
94  		 *     @param ItemClass 
95              Class of the item (e.g. xWeapons.FlakCannonPickup). Not sent if point is not an inventory spot. Sent only in HandShake.
96          
97  		 *   
98  		 * 
99  		 *   
100 		 *     @param ItemSpawned 
101             True if the item is spawned at the point. Not sent if point is not an inventory spot. 
102         
103 		 *   
104 		 * 
105 		 *   
106 		 *     @param DoorOpened 
107             True if this NavPoint is a Door and door is opened. Not sent if point is not a door.
108         
109 		 *   
110 		 * 
111 		 *   
112 		 *     @param Mover 
113             If this NavPoint is marking some mover, the mover id will be here. Not sent if point is not a Door, a LiftCenter or a LiftExit. Sent only in HandShake.
114         
115 		 *   
116 		 * 
117 		 *   
118 		 *     @param LiftOffset 
119             Starting vector between MyLift location and LiftCenter location. Not sent if point is not a LiftCenter. Sent only in HandShake.
120         
121 		 *   
122 		 * 
123 		 *   
124 		 *     @param LiftJumpExit 
125             Boolean. If we can/should exit the lift by a jump when near the destination place. Not sent if point is not a LiftExit. Sent only in HandShake.
126         
127 		 *   
128 		 * 
129 		 *   
130 		 *     @param NoDoubleJump 
131             Boolean. If we should or not use double jump when exiting lift with a jump. Not sent if point is not a LiftExit. Sent only in HandShake.
132         
133 		 *   
134 		 * 
135 		 *   
136 		 *     @param InvSpot 
137 			If this is an inventory spot (item is respawned at this point).
138 		
139 		 *   
140 		 * 
141 		 *   
142 		 *     @param PlayerStart 
143 			If this is a player start (players and/or bots are respawned at this point).
144 		
145 		 *   
146 		 * 
147 		 *   
148 		 *     @param TeamNumber 
149 			Will be sent if this is a player start. In Team games (team deathmatch, capture the flag, domination) holds information about which team respawns at this player start spot. In non-team games will return 0!
150 		
151 		 *   
152 		 * 
153 		 *   
154 		 *     @param DomPoint If this point marks a DominationPoint (for BotDoubleDomination game).
155 		 *   
156 		 * 
157 		 *   
158 		 *     @param DomPointController Exported if this NavPoint is a DominationPoint (for BotDoubleDomination game) - which team controls this point.
159 		 *   
160 		 * 
161 		 *   
162 		 *     @param Door 
163 			If this point marks a door mover.
164 		
165 		 *   
166 		 * 
167 		 *   
168 		 *     @param LiftCenter 
169 			If this point marks a lift center (used to mark center of a lift mover, note that this point will be always moved with the lift).
170 		
171 		 *   
172 		 * 
173 		 *   
174 		 *     @param LiftExit 
175 			If this point marks a lift exit (used to mark exit point of a lift mover).
176 		
177 		 *   
178 		 * 
179 		 *   
180 		 *     @param AIMarker 
181 			If this point is an AI marker - marks an interesting spot in the environment. May be ambush point or sniping spot, etc.
182 		
183 		 *   
184 		 * 
185 		 *   
186 		 *     @param JumpSpot 
187 			If this point marks a jump spot (a special device that causes the bot to jump high or far).
188 		
189 		 *   
190 		 * 
191 		 *   
192 		 *     @param JumpPad 
193 			If this point marks a jump pad (a special device that causes the bot to jump high or far).
194 		
195 		 *   
196 		 * 
197 		 *   
198 		 *     @param JumpDest 
199 			If this point marks a jump destination - some place that can be reached by some special jump.
200 		
201 		 *   
202 		 * 
203 		 *   
204 		 *     @param Teleporter 
205 			If this point marks a teleport. 
206 		
207 		 *   
208 		 * 
209 		 *   
210 		 *     @param Rotation 
211 			If the type is AIMarker. The rotation the bot should be
212 			facing, when doing the action specified by AIMarker. Sent only in HandShake.
213 		
214 		 *   
215 		 * 
216 		 *   
217 		 *     @param RoamingSpot 
218 			Some ambush point, where is good chance to intercept
219 			approaching opponents. Sent only in HandShake.
220 		
221 		 *   
222 		 * 
223 		 *   
224 		 *     @param SnipingSpot Point good for sniping. Sent only in HandShake.
225 		 *   
226 		 * 
227 		 *   
228 		 *     @param ItemInstance If item should be present at this navpoint it's instance will be here.
229 		 *   
230 		 * 
231 		 *   
232 		 *     @param OutgoingEdges Maps edge-LEADING_TO-navpoint-UnrealId to neighbour link, those are outgoing edges (those edges that originates in this navpoint going to another one, those you may usually travel).
233 		 *   
234 		 * 
235 		 *   
236 		 *     @param IncomingEdges Maps edge-ORIGINATES_FROM-navpoint-UnrealId to neighbour link, those are incoming edges (those edges that originates in different navpoint and ends here, do not use this to ask whether you can get to navpoint of specific unreal id, use OutgoingEdges instead).
237 		 *   
238 		 * 
239 		 *   
240 		 *     @param PreferedWeapon 
241 			Class of the weapon that should be prefered when using this
242 			point for AIMarker specified action. Sent only in HandShake.
243 		
244 		 *   
245 		 * 
246 		 */
247 		public NavPointMessage(
248 			UnrealId Id,  Location Location,  Velocity Velocity,  boolean Visible,  UnrealId Item,  ItemType ItemClass,  boolean ItemSpawned,  boolean DoorOpened,  UnrealId Mover,  Vector3d LiftOffset,  boolean LiftJumpExit,  boolean NoDoubleJump,  boolean InvSpot,  boolean PlayerStart,  int TeamNumber,  boolean DomPoint,  int DomPointController,  boolean Door,  boolean LiftCenter,  boolean LiftExit,  boolean AIMarker,  boolean JumpSpot,  boolean JumpPad,  boolean JumpDest,  boolean Teleporter,  Rotation Rotation,  boolean RoamingSpot,  boolean SnipingSpot,  Item ItemInstance,  Map<UnrealId, NavPointNeighbourLink> OutgoingEdges,  Map<UnrealId, NavPointNeighbourLink> IncomingEdges,  String PreferedWeapon
249 		) {
250 			
251 					this.Id = Id;
252 				
253 					this.Location = Location;
254 				
255 					this.Velocity = Velocity;
256 				
257 					this.Visible = Visible;
258 				
259 					this.Item = Item;
260 				
261 					this.ItemClass = ItemClass;
262 				
263 					this.ItemSpawned = ItemSpawned;
264 				
265 					this.DoorOpened = DoorOpened;
266 				
267 					this.Mover = Mover;
268 				
269 					this.LiftOffset = LiftOffset;
270 				
271 					this.LiftJumpExit = LiftJumpExit;
272 				
273 					this.NoDoubleJump = NoDoubleJump;
274 				
275 					this.InvSpot = InvSpot;
276 				
277 					this.PlayerStart = PlayerStart;
278 				
279 					this.TeamNumber = TeamNumber;
280 				
281 					this.DomPoint = DomPoint;
282 				
283 					this.DomPointController = DomPointController;
284 				
285 					this.Door = Door;
286 				
287 					this.LiftCenter = LiftCenter;
288 				
289 					this.LiftExit = LiftExit;
290 				
291 					this.AIMarker = AIMarker;
292 				
293 					this.JumpSpot = JumpSpot;
294 				
295 					this.JumpPad = JumpPad;
296 				
297 					this.JumpDest = JumpDest;
298 				
299 					this.Teleporter = Teleporter;
300 				
301 					this.Rotation = Rotation;
302 				
303 					this.RoamingSpot = RoamingSpot;
304 				
305 					this.SnipingSpot = SnipingSpot;
306 				
307 					this.ItemInstance = ItemInstance;
308 				
309 					this.OutgoingEdges = OutgoingEdges;
310 				
311 					this.IncomingEdges = IncomingEdges;
312 				
313 					this.PreferedWeapon = PreferedWeapon;
314 				
315 		}
316     
317 		/**
318 		 * Cloning constructor from the full message.
319 		 *
320 		 * @param original
321 		 */
322 		public NavPointMessage(NavPointMessage original) {		
323 			
324 					this.Id = original.getId()
325  	;
326 				
327 					this.Location = original.getLocation()
328  	;
329 				
330 					this.Velocity = original.getVelocity()
331  	;
332 				
333 					this.Visible = original.isVisible()
334  	;
335 				
336 					this.Item = original.getItem()
337  	;
338 				
339 					this.ItemClass = original.getItemClass()
340  	;
341 				
342 					this.ItemSpawned = original.isItemSpawned()
343  	;
344 				
345 					this.DoorOpened = original.isDoorOpened()
346  	;
347 				
348 					this.Mover = original.getMover()
349  	;
350 				
351 					this.LiftOffset = original.getLiftOffset()
352  	;
353 				
354 					this.LiftJumpExit = original.isLiftJumpExit()
355  	;
356 				
357 					this.NoDoubleJump = original.isNoDoubleJump()
358  	;
359 				
360 					this.InvSpot = original.isInvSpot()
361  	;
362 				
363 					this.PlayerStart = original.isPlayerStart()
364  	;
365 				
366 					this.TeamNumber = original.getTeamNumber()
367  	;
368 				
369 					this.DomPoint = original.isDomPoint()
370  	;
371 				
372 					this.DomPointController = original.getDomPointController()
373  	;
374 				
375 					this.Door = original.isDoor()
376  	;
377 				
378 					this.LiftCenter = original.isLiftCenter()
379  	;
380 				
381 					this.LiftExit = original.isLiftExit()
382  	;
383 				
384 					this.AIMarker = original.isAIMarker()
385  	;
386 				
387 					this.JumpSpot = original.isJumpSpot()
388  	;
389 				
390 					this.JumpPad = original.isJumpPad()
391  	;
392 				
393 					this.JumpDest = original.isJumpDest()
394  	;
395 				
396 					this.Teleporter = original.isTeleporter()
397  	;
398 				
399 					this.Rotation = original.getRotation()
400  	;
401 				
402 					this.RoamingSpot = original.isRoamingSpot()
403  	;
404 				
405 					this.SnipingSpot = original.isSnipingSpot()
406  	;
407 				
408 					this.ItemInstance = original.getItemInstance()
409  	;
410 				
411 					this.OutgoingEdges = original.getOutgoingEdges()
412  	;
413 				
414 					this.IncomingEdges = original.getIncomingEdges()
415  	;
416 				
417 					this.PreferedWeapon = original.getPreferedWeapon()
418  	;
419 				
420 				this.TeamId = original.getTeamId();
421 			
422 			this.SimTime = original.getSimTime();
423 		}
424 		
425     				
426     					protected ITeamId TeamId;
427     					
428     					/**
429     					 * Used by Yylex to slip corretn TeamId.
430     					 */
431     					protected void setTeamId(ITeamId TeamId) {
432     					    this.TeamId = TeamId;
433     					}
434     				
435     					public ITeamId getTeamId() {
436 							return TeamId;
437 						}
438     	
439     					
440     					
441     	
442 	    /**
443          * 
444 			A unique Id of this navigation point assigned by the game.
445 		 
446          */
447         protected
448          UnrealId Id =
449        	null;
450 	
451     						
452     						/**
453 		 					 * Whether property 'Id' was received from GB2004.
454 		 					 */
455 							protected boolean Id_Set = false;
456 							
457     						@Override
458 		    				
459  		/**
460          * 
461 			A unique Id of this navigation point assigned by the game.
462 		 
463          */
464         public  UnrealId getId()
465  	 {
466 		    					return Id;
467 		    				}
468 		    			
469     	
470 	    /**
471          * Location of navigation point. 
472          */
473         protected
474          Location Location =
475        	null;
476 	
477     						
478     						/**
479 		 					 * Whether property 'Location' was received from GB2004.
480 		 					 */
481 							protected boolean Location_Set = false;
482 							
483     						@Override
484 		    				
485  		/**
486          * Location of navigation point. 
487          */
488         public  Location getLocation()
489  	 {
490 		    					return Location;
491 		    				}
492 		    			
493     	
494 	    /**
495          * 
496 			Velocity of the navigation point (if the navigation point is
497 			currently moving). Not sent at the moment.
498 		 
499          */
500         protected
501          Velocity Velocity =
502        	null;
503 	
504     						
505     						/**
506 		 					 * Whether property 'Velocity' was received from GB2004.
507 		 					 */
508 							protected boolean Velocity_Set = false;
509 							
510     						@Override
511 		    				
512  		/**
513          * 
514 			Velocity of the navigation point (if the navigation point is
515 			currently moving). Not sent at the moment.
516 		 
517          */
518         public  Velocity getVelocity()
519  	 {
520 		    					return Velocity;
521 		    				}
522 		    			
523     	
524 	    /**
525          * 
526 			If the point is in the field of view of the bot.
527 		 
528          */
529         protected
530          boolean Visible =
531        	false;
532 	
533     						
534     						/**
535 		 					 * Whether property 'Visible' was received from GB2004.
536 		 					 */
537 							protected boolean Visible_Set = false;
538 							
539     						@Override
540 		    				
541  		/**
542          * 
543 			If the point is in the field of view of the bot.
544 		 
545          */
546         public  boolean isVisible()
547  	 {
548 		    					return Visible;
549 		    				}
550 		    			
551     	
552 	    /**
553          * 
554 			Unique Id of the respawned item (the item respawns at this
555 			point). Not sent if point is not an inventory spot. Sent only in HandShake.
556 		 
557          */
558         protected
559          UnrealId Item =
560        	null;
561 	
562     						
563     						/**
564 		 					 * Whether property 'Item' was received from GB2004.
565 		 					 */
566 							protected boolean Item_Set = false;
567 							
568     						@Override
569 		    				
570  		/**
571          * 
572 			Unique Id of the respawned item (the item respawns at this
573 			point). Not sent if point is not an inventory spot. Sent only in HandShake.
574 		 
575          */
576         public  UnrealId getItem()
577  	 {
578 		    					return Item;
579 		    				}
580 		    			
581     	
582 	    /**
583          * 
584             Class of the item (e.g. xWeapons.FlakCannonPickup). Not sent if point is not an inventory spot. Sent only in HandShake.
585          
586          */
587         protected
588          ItemType ItemClass =
589        	null;
590 	
591     						
592     						/**
593 		 					 * Whether property 'ItemClass' was received from GB2004.
594 		 					 */
595 							protected boolean ItemClass_Set = false;
596 							
597     						@Override
598 		    				
599  		/**
600          * 
601             Class of the item (e.g. xWeapons.FlakCannonPickup). Not sent if point is not an inventory spot. Sent only in HandShake.
602          
603          */
604         public  ItemType getItemClass()
605  	 {
606 		    					return ItemClass;
607 		    				}
608 		    			
609     	
610 	    /**
611          * 
612             True if the item is spawned at the point. Not sent if point is not an inventory spot. 
613          
614          */
615         protected
616          boolean ItemSpawned =
617        	false;
618 	
619     						
620     						/**
621 		 					 * Whether property 'ItemSpawned' was received from GB2004.
622 		 					 */
623 							protected boolean ItemSpawned_Set = false;
624 							
625     						@Override
626 		    				
627  		/**
628          * 
629             True if the item is spawned at the point. Not sent if point is not an inventory spot. 
630          
631          */
632         public  boolean isItemSpawned()
633  	 {
634 		    					return ItemSpawned;
635 		    				}
636 		    			
637     	
638 	    /**
639          * 
640             True if this NavPoint is a Door and door is opened. Not sent if point is not a door.
641          
642          */
643         protected
644          boolean DoorOpened =
645        	false;
646 	
647     						
648     						/**
649 		 					 * Whether property 'DoorOpened' was received from GB2004.
650 		 					 */
651 							protected boolean DoorOpened_Set = false;
652 							
653     						@Override
654 		    				
655  		/**
656          * 
657             True if this NavPoint is a Door and door is opened. Not sent if point is not a door.
658          
659          */
660         public  boolean isDoorOpened()
661  	 {
662 		    					return DoorOpened;
663 		    				}
664 		    			
665     	
666 	    /**
667          * 
668             If this NavPoint is marking some mover, the mover id will be here. Not sent if point is not a Door, a LiftCenter or a LiftExit. Sent only in HandShake.
669          
670          */
671         protected
672          UnrealId Mover =
673        	null;
674 	
675     						
676     						/**
677 		 					 * Whether property 'Mover' was received from GB2004.
678 		 					 */
679 							protected boolean Mover_Set = false;
680 							
681     						@Override
682 		    				
683  		/**
684          * 
685             If this NavPoint is marking some mover, the mover id will be here. Not sent if point is not a Door, a LiftCenter or a LiftExit. Sent only in HandShake.
686          
687          */
688         public  UnrealId getMover()
689  	 {
690 		    					return Mover;
691 		    				}
692 		    			
693     	
694 	    /**
695          * 
696             Starting vector between MyLift location and LiftCenter location. Not sent if point is not a LiftCenter. Sent only in HandShake.
697          
698          */
699         protected
700          Vector3d LiftOffset =
701        	null;
702 	
703     						
704     						/**
705 		 					 * Whether property 'LiftOffset' was received from GB2004.
706 		 					 */
707 							protected boolean LiftOffset_Set = false;
708 							
709     						@Override
710 		    				
711  		/**
712          * 
713             Starting vector between MyLift location and LiftCenter location. Not sent if point is not a LiftCenter. Sent only in HandShake.
714          
715          */
716         public  Vector3d getLiftOffset()
717  	 {
718 		    					return LiftOffset;
719 		    				}
720 		    			
721     	
722 	    /**
723          * 
724             Boolean. If we can/should exit the lift by a jump when near the destination place. Not sent if point is not a LiftExit. Sent only in HandShake.
725          
726          */
727         protected
728          boolean LiftJumpExit =
729        	false;
730 	
731     						
732     						/**
733 		 					 * Whether property 'LiftJumpExit' was received from GB2004.
734 		 					 */
735 							protected boolean LiftJumpExit_Set = false;
736 							
737     						@Override
738 		    				
739  		/**
740          * 
741             Boolean. If we can/should exit the lift by a jump when near the destination place. Not sent if point is not a LiftExit. Sent only in HandShake.
742          
743          */
744         public  boolean isLiftJumpExit()
745  	 {
746 		    					return LiftJumpExit;
747 		    				}
748 		    			
749     	
750 	    /**
751          * 
752             Boolean. If we should or not use double jump when exiting lift with a jump. Not sent if point is not a LiftExit. Sent only in HandShake.
753          
754          */
755         protected
756          boolean NoDoubleJump =
757        	false;
758 	
759     						
760     						/**
761 		 					 * Whether property 'NoDoubleJump' was received from GB2004.
762 		 					 */
763 							protected boolean NoDoubleJump_Set = false;
764 							
765     						@Override
766 		    				
767  		/**
768          * 
769             Boolean. If we should or not use double jump when exiting lift with a jump. Not sent if point is not a LiftExit. Sent only in HandShake.
770          
771          */
772         public  boolean isNoDoubleJump()
773  	 {
774 		    					return NoDoubleJump;
775 		    				}
776 		    			
777     	
778 	    /**
779          * 
780 			If this is an inventory spot (item is respawned at this point).
781 		 
782          */
783         protected
784          boolean InvSpot =
785        	false;
786 	
787     						
788     						/**
789 		 					 * Whether property 'InvSpot' was received from GB2004.
790 		 					 */
791 							protected boolean InvSpot_Set = false;
792 							
793     						@Override
794 		    				
795  		/**
796          * 
797 			If this is an inventory spot (item is respawned at this point).
798 		 
799          */
800         public  boolean isInvSpot()
801  	 {
802 		    					return InvSpot;
803 		    				}
804 		    			
805     	
806 	    /**
807          * 
808 			If this is a player start (players and/or bots are respawned at this point).
809 		 
810          */
811         protected
812          boolean PlayerStart =
813        	false;
814 	
815     						
816     						/**
817 		 					 * Whether property 'PlayerStart' was received from GB2004.
818 		 					 */
819 							protected boolean PlayerStart_Set = false;
820 							
821     						@Override
822 		    				
823  		/**
824          * 
825 			If this is a player start (players and/or bots are respawned at this point).
826 		 
827          */
828         public  boolean isPlayerStart()
829  	 {
830 		    					return PlayerStart;
831 		    				}
832 		    			
833     	
834 	    /**
835          * 
836 			Will be sent if this is a player start. In Team games (team deathmatch, capture the flag, domination) holds information about which team respawns at this player start spot. In non-team games will return 0!
837 		 
838          */
839         protected
840          int TeamNumber =
841        	0;
842 	
843     						
844     						/**
845 		 					 * Whether property 'TeamNumber' was received from GB2004.
846 		 					 */
847 							protected boolean TeamNumber_Set = false;
848 							
849     						@Override
850 		    				
851  		/**
852          * 
853 			Will be sent if this is a player start. In Team games (team deathmatch, capture the flag, domination) holds information about which team respawns at this player start spot. In non-team games will return 0!
854 		 
855          */
856         public  int getTeamNumber()
857  	 {
858 		    					return TeamNumber;
859 		    				}
860 		    			
861     	
862 	    /**
863          * If this point marks a DominationPoint (for BotDoubleDomination game). 
864          */
865         protected
866          boolean DomPoint =
867        	false;
868 	
869     						
870     						/**
871 		 					 * Whether property 'DomPoint' was received from GB2004.
872 		 					 */
873 							protected boolean DomPoint_Set = false;
874 							
875     						@Override
876 		    				
877  		/**
878          * If this point marks a DominationPoint (for BotDoubleDomination game). 
879          */
880         public  boolean isDomPoint()
881  	 {
882 		    					return DomPoint;
883 		    				}
884 		    			
885     	
886 	    /**
887          * Exported if this NavPoint is a DominationPoint (for BotDoubleDomination game) - which team controls this point. 
888          */
889         protected
890          int DomPointController =
891        	0;
892 	
893     						
894     						/**
895 		 					 * Whether property 'DomPointController' was received from GB2004.
896 		 					 */
897 							protected boolean DomPointController_Set = false;
898 							
899     						@Override
900 		    				
901  		/**
902          * Exported if this NavPoint is a DominationPoint (for BotDoubleDomination game) - which team controls this point. 
903          */
904         public  int getDomPointController()
905  	 {
906 		    					return DomPointController;
907 		    				}
908 		    			
909     	
910 	    /**
911          * 
912 			If this point marks a door mover.
913 		 
914          */
915         protected
916          boolean Door =
917        	false;
918 	
919     						
920     						/**
921 		 					 * Whether property 'Door' was received from GB2004.
922 		 					 */
923 							protected boolean Door_Set = false;
924 							
925     						@Override
926 		    				
927  		/**
928          * 
929 			If this point marks a door mover.
930 		 
931          */
932         public  boolean isDoor()
933  	 {
934 		    					return Door;
935 		    				}
936 		    			
937     	
938 	    /**
939          * 
940 			If this point marks a lift center (used to mark center of a lift mover, note that this point will be always moved with the lift).
941 		 
942          */
943         protected
944          boolean LiftCenter =
945        	false;
946 	
947     						
948     						/**
949 		 					 * Whether property 'LiftCenter' was received from GB2004.
950 		 					 */
951 							protected boolean LiftCenter_Set = false;
952 							
953     						@Override
954 		    				
955  		/**
956          * 
957 			If this point marks a lift center (used to mark center of a lift mover, note that this point will be always moved with the lift).
958 		 
959          */
960         public  boolean isLiftCenter()
961  	 {
962 		    					return LiftCenter;
963 		    				}
964 		    			
965     	
966 	    /**
967          * 
968 			If this point marks a lift exit (used to mark exit point of a lift mover).
969 		 
970          */
971         protected
972          boolean LiftExit =
973        	false;
974 	
975     						
976     						/**
977 		 					 * Whether property 'LiftExit' was received from GB2004.
978 		 					 */
979 							protected boolean LiftExit_Set = false;
980 							
981     						@Override
982 		    				
983  		/**
984          * 
985 			If this point marks a lift exit (used to mark exit point of a lift mover).
986 		 
987          */
988         public  boolean isLiftExit()
989  	 {
990 		    					return LiftExit;
991 		    				}
992 		    			
993     	
994 	    /**
995          * 
996 			If this point is an AI marker - marks an interesting spot in the environment. May be ambush point or sniping spot, etc.
997 		 
998          */
999         protected
1000          boolean AIMarker =
1001        	false;
1002 	
1003     						
1004     						/**
1005 		 					 * Whether property 'AIMarker' was received from GB2004.
1006 		 					 */
1007 							protected boolean AIMarker_Set = false;
1008 							
1009     						@Override
1010 		    				
1011  		/**
1012          * 
1013 			If this point is an AI marker - marks an interesting spot in the environment. May be ambush point or sniping spot, etc.
1014 		 
1015          */
1016         public  boolean isAIMarker()
1017  	 {
1018 		    					return AIMarker;
1019 		    				}
1020 		    			
1021     	
1022 	    /**
1023          * 
1024 			If this point marks a jump spot (a special device that causes the bot to jump high or far).
1025 		 
1026          */
1027         protected
1028          boolean JumpSpot =
1029        	false;
1030 	
1031     						
1032     						/**
1033 		 					 * Whether property 'JumpSpot' was received from GB2004.
1034 		 					 */
1035 							protected boolean JumpSpot_Set = false;
1036 							
1037     						@Override
1038 		    				
1039  		/**
1040          * 
1041 			If this point marks a jump spot (a special device that causes the bot to jump high or far).
1042 		 
1043          */
1044         public  boolean isJumpSpot()
1045  	 {
1046 		    					return JumpSpot;
1047 		    				}
1048 		    			
1049     	
1050 	    /**
1051          * 
1052 			If this point marks a jump pad (a special device that causes the bot to jump high or far).
1053 		 
1054          */
1055         protected
1056          boolean JumpPad =
1057        	false;
1058 	
1059     						
1060     						/**
1061 		 					 * Whether property 'JumpPad' was received from GB2004.
1062 		 					 */
1063 							protected boolean JumpPad_Set = false;
1064 							
1065     						@Override
1066 		    				
1067  		/**
1068          * 
1069 			If this point marks a jump pad (a special device that causes the bot to jump high or far).
1070 		 
1071          */
1072         public  boolean isJumpPad()
1073  	 {
1074 		    					return JumpPad;
1075 		    				}
1076 		    			
1077     	
1078 	    /**
1079          * 
1080 			If this point marks a jump destination - some place that can be reached by some special jump.
1081 		 
1082          */
1083         protected
1084          boolean JumpDest =
1085        	false;
1086 	
1087     						
1088     						/**
1089 		 					 * Whether property 'JumpDest' was received from GB2004.
1090 		 					 */
1091 							protected boolean JumpDest_Set = false;
1092 							
1093     						@Override
1094 		    				
1095  		/**
1096          * 
1097 			If this point marks a jump destination - some place that can be reached by some special jump.
1098 		 
1099          */
1100         public  boolean isJumpDest()
1101  	 {
1102 		    					return JumpDest;
1103 		    				}
1104 		    			
1105     	
1106 	    /**
1107          * 
1108 			If this point marks a teleport. 
1109 		 
1110          */
1111         protected
1112          boolean Teleporter =
1113        	false;
1114 	
1115     						
1116     						/**
1117 		 					 * Whether property 'Teleporter' was received from GB2004.
1118 		 					 */
1119 							protected boolean Teleporter_Set = false;
1120 							
1121     						@Override
1122 		    				
1123  		/**
1124          * 
1125 			If this point marks a teleport. 
1126 		 
1127          */
1128         public  boolean isTeleporter()
1129  	 {
1130 		    					return Teleporter;
1131 		    				}
1132 		    			
1133     	
1134 	    /**
1135          * 
1136 			If the type is AIMarker. The rotation the bot should be
1137 			facing, when doing the action specified by AIMarker. Sent only in HandShake.
1138 		 
1139          */
1140         protected
1141          Rotation Rotation =
1142        	null;
1143 	
1144     						
1145     						/**
1146 		 					 * Whether property 'Rotation' was received from GB2004.
1147 		 					 */
1148 							protected boolean Rotation_Set = false;
1149 							
1150     						@Override
1151 		    				
1152  		/**
1153          * 
1154 			If the type is AIMarker. The rotation the bot should be
1155 			facing, when doing the action specified by AIMarker. Sent only in HandShake.
1156 		 
1157          */
1158         public  Rotation getRotation()
1159  	 {
1160 		    					return Rotation;
1161 		    				}
1162 		    			
1163     	
1164 	    /**
1165          * 
1166 			Some ambush point, where is good chance to intercept
1167 			approaching opponents. Sent only in HandShake.
1168 		 
1169          */
1170         protected
1171          boolean RoamingSpot =
1172        	false;
1173 	
1174     						
1175     						/**
1176 		 					 * Whether property 'RoamingSpot' was received from GB2004.
1177 		 					 */
1178 							protected boolean RoamingSpot_Set = false;
1179 							
1180     						@Override
1181 		    				
1182  		/**
1183          * 
1184 			Some ambush point, where is good chance to intercept
1185 			approaching opponents. Sent only in HandShake.
1186 		 
1187          */
1188         public  boolean isRoamingSpot()
1189  	 {
1190 		    					return RoamingSpot;
1191 		    				}
1192 		    			
1193     	
1194 	    /**
1195          * Point good for sniping. Sent only in HandShake. 
1196          */
1197         protected
1198          boolean SnipingSpot =
1199        	false;
1200 	
1201     						
1202     						/**
1203 		 					 * Whether property 'SnipingSpot' was received from GB2004.
1204 		 					 */
1205 							protected boolean SnipingSpot_Set = false;
1206 							
1207     						@Override
1208 		    				
1209  		/**
1210          * Point good for sniping. Sent only in HandShake. 
1211          */
1212         public  boolean isSnipingSpot()
1213  	 {
1214 		    					return SnipingSpot;
1215 		    				}
1216 		    			
1217     	
1218 	    /**
1219          * If item should be present at this navpoint it's instance will be here. 
1220          */
1221         protected
1222          Item ItemInstance =
1223        	null;
1224 	
1225     						
1226     						/**
1227 		 					 * Whether property 'ItemInstance' was received from GB2004.
1228 		 					 */
1229 							protected boolean ItemInstance_Set = false;
1230 							
1231     						@Override
1232 		    				
1233  		/**
1234          * If item should be present at this navpoint it's instance will be here. 
1235          */
1236         public  Item getItemInstance()
1237  	 {
1238 		    					return ItemInstance;
1239 		    				}
1240 		    			
1241     	
1242 	    /**
1243          * Maps edge-LEADING_TO-navpoint-UnrealId to neighbour link, those are outgoing edges (those edges that originates in this navpoint going to another one, those you may usually travel). 
1244          */
1245         protected
1246          Map<UnrealId, NavPointNeighbourLink> OutgoingEdges =
1247        	new HashMap<UnrealId, NavPointNeighbourLink>();
1248 	
1249     						
1250     						/**
1251 		 					 * Whether property 'OutgoingEdges' was received from GB2004.
1252 		 					 */
1253 							protected boolean OutgoingEdges_Set = false;
1254 							
1255     						@Override
1256 		    				
1257  		/**
1258          * Maps edge-LEADING_TO-navpoint-UnrealId to neighbour link, those are outgoing edges (those edges that originates in this navpoint going to another one, those you may usually travel). 
1259          */
1260         public  Map<UnrealId, NavPointNeighbourLink> getOutgoingEdges()
1261  	 {
1262 		    					return OutgoingEdges;
1263 		    				}
1264 		    			
1265     	
1266 	    /**
1267          * Maps edge-ORIGINATES_FROM-navpoint-UnrealId to neighbour link, those are incoming edges (those edges that originates in different navpoint and ends here, do not use this to ask whether you can get to navpoint of specific unreal id, use OutgoingEdges instead). 
1268          */
1269         protected
1270          Map<UnrealId, NavPointNeighbourLink> IncomingEdges =
1271        	new HashMap<UnrealId, NavPointNeighbourLink>();
1272 	
1273     						
1274     						/**
1275 		 					 * Whether property 'IncomingEdges' was received from GB2004.
1276 		 					 */
1277 							protected boolean IncomingEdges_Set = false;
1278 							
1279     						@Override
1280 		    				
1281  		/**
1282          * Maps edge-ORIGINATES_FROM-navpoint-UnrealId to neighbour link, those are incoming edges (those edges that originates in different navpoint and ends here, do not use this to ask whether you can get to navpoint of specific unreal id, use OutgoingEdges instead). 
1283          */
1284         public  Map<UnrealId, NavPointNeighbourLink> getIncomingEdges()
1285  	 {
1286 		    					return IncomingEdges;
1287 		    				}
1288 		    			
1289     	
1290 	    /**
1291          * 
1292 			Class of the weapon that should be prefered when using this
1293 			point for AIMarker specified action. Sent only in HandShake.
1294 		 
1295          */
1296         protected
1297          String PreferedWeapon =
1298        	null;
1299 	
1300     						
1301     						/**
1302 		 					 * Whether property 'PreferedWeapon' was received from GB2004.
1303 		 					 */
1304 							protected boolean PreferedWeapon_Set = false;
1305 							
1306     						@Override
1307 		    				
1308  		/**
1309          * 
1310 			Class of the weapon that should be prefered when using this
1311 			point for AIMarker specified action. Sent only in HandShake.
1312 		 
1313          */
1314         public  String getPreferedWeapon()
1315  	 {
1316 		    					return PreferedWeapon;
1317 		    				}
1318 		    			
1319 		    			
1320 		    			private NavPointLocal localPart = null;
1321 		    			
1322 		    			@Override
1323 						public NavPointLocal 
1324 						getLocal() {
1325 							if (localPart != null) return localPart;
1326 							return localPart = new 
1327 								NavPointLocalMessage();
1328 						}
1329 					
1330 						private NavPointShared sharedPart = null;
1331 					
1332 						@Override
1333 						public NavPointShared 
1334 						getShared() {
1335 							if (sharedPart != null) return sharedPart;							
1336 							return sharedPart = new 
1337 								NavPointSharedMessage();
1338 						}
1339 					
1340 						private NavPointStatic staticPart = null; 
1341 					
1342 						@Override
1343 						public NavPointStatic 
1344 						getStatic() {
1345 							if (staticPart != null) return staticPart;
1346 							return staticPart = new 
1347 								NavPointStaticMessage();
1348 						}
1349     				
1350  		/**
1351          *  
1352             				Implementation of the local part of the GameBots2004 message NAV, used
1353             				to facade NAVMessage.  
1354             			
1355          *
1356          *  <p></p><p></p>
1357          *  Complete message documentation:               
1358          *  
1359 		Synchronous message. NavPoint carries information about UT
1360 		navigation point - location, reachability... Also some item can
1361 		be respawned at this point. Or some additional information can
1362 		be stored here (if it is an ambush point, or sniper point..).
1363 	
1364          */
1365  	public class NavPointLocalMessage 
1366 	  					extends
1367   						NavPointLocal
1368 	    {
1369  	
1370 		    			@Override
1371 		    			public 
1372 		    			NavPointLocalMessage clone() {
1373 		    				return this;
1374 		    			}
1375 		    			
1376 		    				public NavPointLocalMessage getLocal() {
1377 								return this;
1378 					    	}
1379 							public ISharedWorldObject getShared() {
1380 							 	throw new UnsupportedOperationException("Could not return LOCAL as SHARED");
1381 							}
1382 							public IStaticWorldObject getStatic() {
1383 							    throw new UnsupportedOperationException("Could not return LOCAL as STATIC");
1384 							}
1385 		    			
1386  		/**
1387          * 
1388 			A unique Id of this navigation point assigned by the game.
1389 		 
1390          */
1391         public  UnrealId getId()
1392  	 {
1393 				    					return Id;
1394 				    				}
1395 				    			
1396  		/**
1397          * 
1398 			If the point is in the field of view of the bot.
1399 		 
1400          */
1401         public  boolean isVisible()
1402  	 {
1403 				    					return Visible;
1404 				    				}
1405 				    			
1406  		
1407  	    public String toString() {
1408             return
1409             	super.toString() + "[" +
1410             	
1411 		              			"Id = " + String.valueOf(getId()
1412  	) + " | " + 
1413 		              		
1414 		              			"Visible = " + String.valueOf(isVisible()
1415  	) + " | " + 
1416 		              		
1417 				"]";           		
1418         }
1419  	
1420  		
1421  		public String toHtmlString() {
1422  			return super.toString() + "[<br/>" +
1423             	
1424 		              			"<b>Id</b> = " + String.valueOf(getId()
1425  	) + " <br/> " + 
1426 		              		
1427 		              			"<b>Visible</b> = " + String.valueOf(isVisible()
1428  	) + " <br/> " + 
1429 		              		
1430 				"<br/>]";     
1431 		}
1432  	
1433  		
1434  		// --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=all]) ---
1435         	
1436 		// --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=all]) ---
1437 		
1438 	    // --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=local+classtype[@name=message]) ---
1439 	        
1440 	    // --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=local+classtype[@name=message]) ---        	            	
1441  	
1442 		}
1443  	
1444  		/**
1445          *  
1446             				Implementation of the static part of the GameBots2004 message NAV, used
1447             				to facade NAVMessage.  
1448             			
1449          *
1450          *  <p></p><p></p>
1451          *  Complete message documentation:               
1452          *  
1453 		Synchronous message. NavPoint carries information about UT
1454 		navigation point - location, reachability... Also some item can
1455 		be respawned at this point. Or some additional information can
1456 		be stored here (if it is an ambush point, or sniper point..).
1457 	
1458          */
1459  	public class NavPointStaticMessage 
1460 	  					extends
1461   						NavPointStatic
1462 	    {
1463  	
1464 		    			@Override
1465 		    			public 
1466 		    			NavPointStaticMessage clone() {
1467 		    				return this;
1468 		    			}
1469 		    			
1470  		/**
1471          * 
1472 			A unique Id of this navigation point assigned by the game.
1473 		 
1474          */
1475         public  UnrealId getId()
1476  	 {
1477 				    					return Id;
1478 				    				}
1479 				    			
1480  		/**
1481          * 
1482 			Unique Id of the respawned item (the item respawns at this
1483 			point). Not sent if point is not an inventory spot. Sent only in HandShake.
1484 		 
1485          */
1486         public  UnrealId getItem()
1487  	 {
1488 				    					return Item;
1489 				    				}
1490 				    			
1491  		/**
1492          * 
1493             Class of the item (e.g. xWeapons.FlakCannonPickup). Not sent if point is not an inventory spot. Sent only in HandShake.
1494          
1495          */
1496         public  ItemType getItemClass()
1497  	 {
1498 				    					return ItemClass;
1499 				    				}
1500 				    			
1501  		/**
1502          * 
1503             If this NavPoint is marking some mover, the mover id will be here. Not sent if point is not a Door, a LiftCenter or a LiftExit. Sent only in HandShake.
1504          
1505          */
1506         public  UnrealId getMover()
1507  	 {
1508 				    					return Mover;
1509 				    				}
1510 				    			
1511  		/**
1512          * 
1513             Starting vector between MyLift location and LiftCenter location. Not sent if point is not a LiftCenter. Sent only in HandShake.
1514          
1515          */
1516         public  Vector3d getLiftOffset()
1517  	 {
1518 				    					return LiftOffset;
1519 				    				}
1520 				    			
1521  		/**
1522          * 
1523             Boolean. If we can/should exit the lift by a jump when near the destination place. Not sent if point is not a LiftExit. Sent only in HandShake.
1524          
1525          */
1526         public  boolean isLiftJumpExit()
1527  	 {
1528 				    					return LiftJumpExit;
1529 				    				}
1530 				    			
1531  		/**
1532          * 
1533             Boolean. If we should or not use double jump when exiting lift with a jump. Not sent if point is not a LiftExit. Sent only in HandShake.
1534          
1535          */
1536         public  boolean isNoDoubleJump()
1537  	 {
1538 				    					return NoDoubleJump;
1539 				    				}
1540 				    			
1541  		/**
1542          * 
1543 			Will be sent if this is a player start. In Team games (team deathmatch, capture the flag, domination) holds information about which team respawns at this player start spot. In non-team games will return 0!
1544 		 
1545          */
1546         public  int getTeamNumber()
1547  	 {
1548 				    					return TeamNumber;
1549 				    				}
1550 				    			
1551  		/**
1552          * If this point marks a DominationPoint (for BotDoubleDomination game). 
1553          */
1554         public  boolean isDomPoint()
1555  	 {
1556 				    					return DomPoint;
1557 				    				}
1558 				    			
1559  		/**
1560          * Exported if this NavPoint is a DominationPoint (for BotDoubleDomination game) - which team controls this point. 
1561          */
1562         public  int getDomPointController()
1563  	 {
1564 				    					return DomPointController;
1565 				    				}
1566 				    			
1567  		/**
1568          * 
1569 			If this point marks a door mover.
1570 		 
1571          */
1572         public  boolean isDoor()
1573  	 {
1574 				    					return Door;
1575 				    				}
1576 				    			
1577  		/**
1578          * 
1579 			If this point marks a lift center (used to mark center of a lift mover, note that this point will be always moved with the lift).
1580 		 
1581          */
1582         public  boolean isLiftCenter()
1583  	 {
1584 				    					return LiftCenter;
1585 				    				}
1586 				    			
1587  		/**
1588          * 
1589 			If this point marks a lift exit (used to mark exit point of a lift mover).
1590 		 
1591          */
1592         public  boolean isLiftExit()
1593  	 {
1594 				    					return LiftExit;
1595 				    				}
1596 				    			
1597  		/**
1598          * 
1599 			If this point is an AI marker - marks an interesting spot in the environment. May be ambush point or sniping spot, etc.
1600 		 
1601          */
1602         public  boolean isAIMarker()
1603  	 {
1604 				    					return AIMarker;
1605 				    				}
1606 				    			
1607  		/**
1608          * 
1609 			If this point marks a jump spot (a special device that causes the bot to jump high or far).
1610 		 
1611          */
1612         public  boolean isJumpSpot()
1613  	 {
1614 				    					return JumpSpot;
1615 				    				}
1616 				    			
1617  		/**
1618          * 
1619 			If this point marks a jump pad (a special device that causes the bot to jump high or far).
1620 		 
1621          */
1622         public  boolean isJumpPad()
1623  	 {
1624 				    					return JumpPad;
1625 				    				}
1626 				    			
1627  		/**
1628          * 
1629 			If this point marks a jump destination - some place that can be reached by some special jump.
1630 		 
1631          */
1632         public  boolean isJumpDest()
1633  	 {
1634 				    					return JumpDest;
1635 				    				}
1636 				    			
1637  		/**
1638          * 
1639 			If this point marks a teleport. 
1640 		 
1641          */
1642         public  boolean isTeleporter()
1643  	 {
1644 				    					return Teleporter;
1645 				    				}
1646 				    			
1647  		/**
1648          * 
1649 			If the type is AIMarker. The rotation the bot should be
1650 			facing, when doing the action specified by AIMarker. Sent only in HandShake.
1651 		 
1652          */
1653         public  Rotation getRotation()
1654  	 {
1655 				    					return Rotation;
1656 				    				}
1657 				    			
1658  		/**
1659          * 
1660 			Some ambush point, where is good chance to intercept
1661 			approaching opponents. Sent only in HandShake.
1662 		 
1663          */
1664         public  boolean isRoamingSpot()
1665  	 {
1666 				    					return RoamingSpot;
1667 				    				}
1668 				    			
1669  		/**
1670          * Point good for sniping. Sent only in HandShake. 
1671          */
1672         public  boolean isSnipingSpot()
1673  	 {
1674 				    					return SnipingSpot;
1675 				    				}
1676 				    			
1677  		/**
1678          * If item should be present at this navpoint it's instance will be here. 
1679          */
1680         public  Item getItemInstance()
1681  	 {
1682 				    					return ItemInstance;
1683 				    				}
1684 				    			
1685  		/**
1686          * Maps edge-LEADING_TO-navpoint-UnrealId to neighbour link, those are outgoing edges (those edges that originates in this navpoint going to another one, those you may usually travel). 
1687          */
1688         public  Map<UnrealId, NavPointNeighbourLink> getOutgoingEdges()
1689  	 {
1690 				    					return OutgoingEdges;
1691 				    				}
1692 				    			
1693  		/**
1694          * Maps edge-ORIGINATES_FROM-navpoint-UnrealId to neighbour link, those are incoming edges (those edges that originates in different navpoint and ends here, do not use this to ask whether you can get to navpoint of specific unreal id, use OutgoingEdges instead). 
1695          */
1696         public  Map<UnrealId, NavPointNeighbourLink> getIncomingEdges()
1697  	 {
1698 				    					return IncomingEdges;
1699 				    				}
1700 				    			
1701  		/**
1702          * 
1703 			Class of the weapon that should be prefered when using this
1704 			point for AIMarker specified action. Sent only in HandShake.
1705 		 
1706          */
1707         public  String getPreferedWeapon()
1708  	 {
1709 				    					return PreferedWeapon;
1710 				    				}
1711 				    			
1712  		
1713  		@Override
1714  		public boolean isDifferentFrom(IStaticWorldObject other)
1715  		{
1716  			if (other == null) //early fail
1717  			{
1718  				return true;
1719  			}
1720  			else if (other == this) //early out
1721  			{
1722  				return false;
1723  			}
1724  			else
1725  			{
1726  				NavPointStatic obj = (NavPointStatic) other;
1727 
1728  				
1729  						if ( !(
1730  	 			AdvancedEquals.equalsOrNull(this.getId()
1731  	, obj.getId()
1732  	)
1733  	 		) )
1734 						{
1735 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Id on object class NavPointStatic");
1736 							return true;
1737 						}
1738  					
1739  						if ( !(
1740  	 			AdvancedEquals.equalsOrNull(this.getItem()
1741  	, obj.getItem()
1742  	)
1743  	 		) )
1744 						{
1745 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Item on object class NavPointStatic");
1746 							return true;
1747 						}
1748  					
1749  						if ( !(
1750  	 			AdvancedEquals.equalsOrNull(this.getItemClass()
1751  	, obj.getItemClass()
1752  	)
1753  	 		) )
1754 						{
1755 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property ItemClass on object class NavPointStatic");
1756 							return true;
1757 						}
1758  					
1759  						if ( !(
1760  	 			AdvancedEquals.equalsOrNull(this.getMover()
1761  	, obj.getMover()
1762  	)
1763  	 		) )
1764 						{
1765 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Mover on object class NavPointStatic");
1766 							return true;
1767 						}
1768  					
1769  						if ( !(
1770  	 			AdvancedEquals.equalsOrNull(this.getLiftOffset()
1771  	, obj.getLiftOffset()
1772  	)
1773  	 		) )
1774 						{
1775 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property LiftOffset on object class NavPointStatic");
1776 							return true;
1777 						}
1778  					
1779  						if ( !(this.isLiftJumpExit()
1780  	
1781  	 			== obj.isLiftJumpExit()
1782  	) )
1783 						{
1784 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property LiftJumpExit on object class NavPointStatic");
1785 							return true;
1786 						}
1787  					
1788  						if ( !(this.isNoDoubleJump()
1789  	
1790  	 			== obj.isNoDoubleJump()
1791  	) )
1792 						{
1793 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property NoDoubleJump on object class NavPointStatic");
1794 							return true;
1795 						}
1796  					
1797  						if ( !(this.getTeamNumber()
1798  	
1799  	 			== obj.getTeamNumber()
1800  	) )
1801 						{
1802 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property TeamNumber on object class NavPointStatic");
1803 							return true;
1804 						}
1805  					
1806  						if ( !(this.isDomPoint()
1807  	
1808  	 			== obj.isDomPoint()
1809  	) )
1810 						{
1811 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property DomPoint on object class NavPointStatic");
1812 							return true;
1813 						}
1814  					
1815  						if ( !(this.getDomPointController()
1816  	
1817  	 			== obj.getDomPointController()
1818  	) )
1819 						{
1820 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property DomPointController on object class NavPointStatic");
1821 							return true;
1822 						}
1823  					
1824  						if ( !(this.isDoor()
1825  	
1826  	 			== obj.isDoor()
1827  	) )
1828 						{
1829 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Door on object class NavPointStatic");
1830 							return true;
1831 						}
1832  					
1833  						if ( !(this.isLiftCenter()
1834  	
1835  	 			== obj.isLiftCenter()
1836  	) )
1837 						{
1838 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property LiftCenter on object class NavPointStatic");
1839 							return true;
1840 						}
1841  					
1842  						if ( !(this.isLiftExit()
1843  	
1844  	 			== obj.isLiftExit()
1845  	) )
1846 						{
1847 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property LiftExit on object class NavPointStatic");
1848 							return true;
1849 						}
1850  					
1851  						if ( !(this.isAIMarker()
1852  	
1853  	 			== obj.isAIMarker()
1854  	) )
1855 						{
1856 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property AIMarker on object class NavPointStatic");
1857 							return true;
1858 						}
1859  					
1860  						if ( !(this.isJumpSpot()
1861  	
1862  	 			== obj.isJumpSpot()
1863  	) )
1864 						{
1865 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property JumpSpot on object class NavPointStatic");
1866 							return true;
1867 						}
1868  					
1869  						if ( !(this.isJumpPad()
1870  	
1871  	 			== obj.isJumpPad()
1872  	) )
1873 						{
1874 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property JumpPad on object class NavPointStatic");
1875 							return true;
1876 						}
1877  					
1878  						if ( !(this.isJumpDest()
1879  	
1880  	 			== obj.isJumpDest()
1881  	) )
1882 						{
1883 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property JumpDest on object class NavPointStatic");
1884 							return true;
1885 						}
1886  					
1887  						if ( !(this.isTeleporter()
1888  	
1889  	 			== obj.isTeleporter()
1890  	) )
1891 						{
1892 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Teleporter on object class NavPointStatic");
1893 							return true;
1894 						}
1895  					
1896  						if ( !(
1897  	 			AdvancedEquals.equalsOrNull(this.getRotation()
1898  	, obj.getRotation()
1899  	)
1900  	 		) )
1901 						{
1902 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Rotation on object class NavPointStatic");
1903 							return true;
1904 						}
1905  					
1906  						if ( !(this.isRoamingSpot()
1907  	
1908  	 			== obj.isRoamingSpot()
1909  	) )
1910 						{
1911 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property RoamingSpot on object class NavPointStatic");
1912 							return true;
1913 						}
1914  					
1915  						if ( !(this.isSnipingSpot()
1916  	
1917  	 			== obj.isSnipingSpot()
1918  	) )
1919 						{
1920 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property SnipingSpot on object class NavPointStatic");
1921 							return true;
1922 						}
1923  					
1924  						if ( !(
1925  	 			AdvancedEquals.equalsOrNull(this.getItemInstance()
1926  	, obj.getItemInstance()
1927  	)
1928  	 		) )
1929 						{
1930 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property ItemInstance on object class NavPointStatic");
1931 							return true;
1932 						}
1933  					
1934  						//Skipping outgoing and incoming edges tests because the navGraph is sent only once
1935  					
1936  						//Skipping outgoing and incoming edges tests because the navGraph is sent only once
1937  					
1938  						if ( !(
1939  	 			AdvancedEquals.equalsOrNull(this.getPreferedWeapon()
1940  	, obj.getPreferedWeapon()
1941  	)
1942  	 		) )
1943 						{
1944 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property PreferedWeapon on object class NavPointStatic");
1945 							return true;
1946 						}
1947  					
1948  			}
1949  			return false;
1950  		}
1951  	 
1952  		
1953  	    public String toString() {
1954             return
1955             	super.toString() + "[" +
1956             	
1957 		              			"Id = " + String.valueOf(getId()
1958  	) + " | " + 
1959 		              		
1960 		              			"Item = " + String.valueOf(getItem()
1961  	) + " | " + 
1962 		              		
1963 		              			"ItemClass = " + String.valueOf(getItemClass()
1964  	) + " | " + 
1965 		              		
1966 		              			"Mover = " + String.valueOf(getMover()
1967  	) + " | " + 
1968 		              		
1969 		              			"LiftOffset = " + String.valueOf(getLiftOffset()
1970  	) + " | " + 
1971 		              		
1972 		              			"LiftJumpExit = " + String.valueOf(isLiftJumpExit()
1973  	) + " | " + 
1974 		              		
1975 		              			"NoDoubleJump = " + String.valueOf(isNoDoubleJump()
1976  	) + " | " + 
1977 		              		
1978 		              			"TeamNumber = " + String.valueOf(getTeamNumber()
1979  	) + " | " + 
1980 		              		
1981 		              			"DomPoint = " + String.valueOf(isDomPoint()
1982  	) + " | " + 
1983 		              		
1984 		              			"DomPointController = " + String.valueOf(getDomPointController()
1985  	) + " | " + 
1986 		              		
1987 		              			"Door = " + String.valueOf(isDoor()
1988  	) + " | " + 
1989 		              		
1990 		              			"LiftCenter = " + String.valueOf(isLiftCenter()
1991  	) + " | " + 
1992 		              		
1993 		              			"LiftExit = " + String.valueOf(isLiftExit()
1994  	) + " | " + 
1995 		              		
1996 		              			"AIMarker = " + String.valueOf(isAIMarker()
1997  	) + " | " + 
1998 		              		
1999 		              			"JumpSpot = " + String.valueOf(isJumpSpot()
2000  	) + " | " + 
2001 		              		
2002 		              			"JumpPad = " + String.valueOf(isJumpPad()
2003  	) + " | " + 
2004 		              		
2005 		              			"JumpDest = " + String.valueOf(isJumpDest()
2006  	) + " | " + 
2007 		              		
2008 		              			"Teleporter = " + String.valueOf(isTeleporter()
2009  	) + " | " + 
2010 		              		
2011 		              			"Rotation = " + String.valueOf(getRotation()
2012  	) + " | " + 
2013 		              		
2014 		              			"RoamingSpot = " + String.valueOf(isRoamingSpot()
2015  	) + " | " + 
2016 		              		
2017 		              			"SnipingSpot = " + String.valueOf(isSnipingSpot()
2018  	) + " | " + 
2019 		              		
2020 		              			"PreferedWeapon = " + String.valueOf(getPreferedWeapon()
2021  	) + " | " + 
2022 		              		
2023 				"]";           		
2024         }
2025  	
2026  		
2027  		public String toHtmlString() {
2028  			return super.toString() + "[<br/>" +
2029             	
2030 		              			"<b>Id</b> = " + String.valueOf(getId()
2031  	) + " <br/> " + 
2032 		              		
2033 		              			"<b>Item</b> = " + String.valueOf(getItem()
2034  	) + " <br/> " + 
2035 		              		
2036 		              			"<b>ItemClass</b> = " + String.valueOf(getItemClass()
2037  	) + " <br/> " + 
2038 		              		
2039 		              			"<b>Mover</b> = " + String.valueOf(getMover()
2040  	) + " <br/> " + 
2041 		              		
2042 		              			"<b>LiftOffset</b> = " + String.valueOf(getLiftOffset()
2043  	) + " <br/> " + 
2044 		              		
2045 		              			"<b>LiftJumpExit</b> = " + String.valueOf(isLiftJumpExit()
2046  	) + " <br/> " + 
2047 		              		
2048 		              			"<b>NoDoubleJump</b> = " + String.valueOf(isNoDoubleJump()
2049  	) + " <br/> " + 
2050 		              		
2051 		              			"<b>TeamNumber</b> = " + String.valueOf(getTeamNumber()
2052  	) + " <br/> " + 
2053 		              		
2054 		              			"<b>DomPoint</b> = " + String.valueOf(isDomPoint()
2055  	) + " <br/> " + 
2056 		              		
2057 		              			"<b>DomPointController</b> = " + String.valueOf(getDomPointController()
2058  	) + " <br/> " + 
2059 		              		
2060 		              			"<b>Door</b> = " + String.valueOf(isDoor()
2061  	) + " <br/> " + 
2062 		              		
2063 		              			"<b>LiftCenter</b> = " + String.valueOf(isLiftCenter()
2064  	) + " <br/> " + 
2065 		              		
2066 		              			"<b>LiftExit</b> = " + String.valueOf(isLiftExit()
2067  	) + " <br/> " + 
2068 		              		
2069 		              			"<b>AIMarker</b> = " + String.valueOf(isAIMarker()
2070  	) + " <br/> " + 
2071 		              		
2072 		              			"<b>JumpSpot</b> = " + String.valueOf(isJumpSpot()
2073  	) + " <br/> " + 
2074 		              		
2075 		              			"<b>JumpPad</b> = " + String.valueOf(isJumpPad()
2076  	) + " <br/> " + 
2077 		              		
2078 		              			"<b>JumpDest</b> = " + String.valueOf(isJumpDest()
2079  	) + " <br/> " + 
2080 		              		
2081 		              			"<b>Teleporter</b> = " + String.valueOf(isTeleporter()
2082  	) + " <br/> " + 
2083 		              		
2084 		              			"<b>Rotation</b> = " + String.valueOf(getRotation()
2085  	) + " <br/> " + 
2086 		              		
2087 		              			"<b>RoamingSpot</b> = " + String.valueOf(isRoamingSpot()
2088  	) + " <br/> " + 
2089 		              		
2090 		              			"<b>SnipingSpot</b> = " + String.valueOf(isSnipingSpot()
2091  	) + " <br/> " + 
2092 		              		
2093 		              			"<b>PreferedWeapon</b> = " + String.valueOf(getPreferedWeapon()
2094  	) + " <br/> " + 
2095 		              		
2096 				"<br/>]";     
2097 		}
2098  	
2099  		
2100  		// --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=all]) ---
2101         	
2102 		// --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=all]) ---
2103 		
2104 	    // --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=static+classtype[@name=message]) ---
2105 	        
2106 	    // --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=static+classtype[@name=message]) ---        	            	
2107  	
2108 		}
2109  	
2110  		/**
2111          *  
2112             				Implementation of the shared part of the GameBots2004 message NAV, used
2113             				to facade NAVMessage.  
2114             			
2115          *
2116          *  <p></p><p></p>
2117          *  Complete message documentation:               
2118          *  
2119 		Synchronous message. NavPoint carries information about UT
2120 		navigation point - location, reachability... Also some item can
2121 		be respawned at this point. Or some additional information can
2122 		be stored here (if it is an ambush point, or sniper point..).
2123 	
2124          */
2125  	public class NavPointSharedMessage 
2126 	  					extends
2127   						NavPointShared
2128 	    {
2129  	
2130     	
2131     	
2132 		public NavPointSharedMessage()
2133 		{
2134 			
2135 				propertyMap.put(myLocation.getPropertyId(), myLocation);
2136 			
2137 				propertyMap.put(myVelocity.getPropertyId(), myVelocity);
2138 			
2139 				propertyMap.put(myItemSpawned.getPropertyId(), myItemSpawned);
2140 			
2141 				propertyMap.put(myDoorOpened.getPropertyId(), myDoorOpened);
2142 			
2143 				propertyMap.put(myInvSpot.getPropertyId(), myInvSpot);
2144 			
2145 				propertyMap.put(myPlayerStart.getPropertyId(), myPlayerStart);
2146 			
2147 		}		
2148     
2149 		    			@Override
2150 		    			public 
2151 		    			NavPointSharedMessage clone() {
2152 		    				return this;
2153 		    			}
2154 		    			
2155 		
2156 		
2157 		
2158 		protected HashMap<PropertyId, ISharedProperty> propertyMap = new HashMap<PropertyId, ISharedProperty>(
2159 			6
2160 		);
2161 		
2162 		@Override
2163 		public ISharedProperty getProperty(PropertyId id) {
2164 			return propertyMap.get(id);
2165 		}
2166 
2167 		@Override
2168 		public Map<PropertyId, ISharedProperty> getProperties() {
2169 			return propertyMap;
2170 		}
2171 	
2172 		
2173 		
2174  		/**
2175          * 
2176 			A unique Id of this navigation point assigned by the game.
2177 		 
2178          */
2179         public  UnrealId getId()
2180  	 {
2181   			return Id;
2182   		}
2183   		
2184     	
2185 	    /**
2186          * Location of navigation point. 
2187          */
2188         protected
2189          LocationProperty 
2190         myLocation
2191 					= new
2192 					LocationProperty
2193 					(
2194 						getId(), 
2195 						"Location", 
2196 						Location, 
2197 						NavPoint.class
2198 					);
2199 					
2200  		/**
2201          * Location of navigation point. 
2202          */
2203         public  Location getLocation()
2204  	 {
2205 			  			return myLocation.getValue();
2206 			  		}
2207 				
2208     	
2209 	    /**
2210          * 
2211 			Velocity of the navigation point (if the navigation point is
2212 			currently moving). Not sent at the moment.
2213 		 
2214          */
2215         protected
2216          VelocityProperty 
2217         myVelocity
2218 					= new
2219 					VelocityProperty
2220 					(
2221 						getId(), 
2222 						"Velocity", 
2223 						Velocity, 
2224 						NavPoint.class
2225 					);
2226 					
2227  		/**
2228          * 
2229 			Velocity of the navigation point (if the navigation point is
2230 			currently moving). Not sent at the moment.
2231 		 
2232          */
2233         public  Velocity getVelocity()
2234  	 {
2235 			  			return myVelocity.getValue();
2236 			  		}
2237 				
2238     	
2239 	    /**
2240          * 
2241             True if the item is spawned at the point. Not sent if point is not an inventory spot. 
2242          
2243          */
2244         protected
2245          BooleanProperty 
2246         myItemSpawned
2247 					= new
2248 					BooleanProperty
2249 					(
2250 						getId(), 
2251 						"ItemSpawned", 
2252 						ItemSpawned, 
2253 						NavPoint.class
2254 					);
2255 					
2256  		/**
2257          * 
2258             True if the item is spawned at the point. Not sent if point is not an inventory spot. 
2259          
2260          */
2261         public  boolean isItemSpawned()
2262  	 {
2263 			  			return myItemSpawned.getValue();
2264 			  		}
2265 				
2266     	
2267 	    /**
2268          * 
2269             True if this NavPoint is a Door and door is opened. Not sent if point is not a door.
2270          
2271          */
2272         protected
2273          BooleanProperty 
2274         myDoorOpened
2275 					= new
2276 					BooleanProperty
2277 					(
2278 						getId(), 
2279 						"DoorOpened", 
2280 						DoorOpened, 
2281 						NavPoint.class
2282 					);
2283 					
2284  		/**
2285          * 
2286             True if this NavPoint is a Door and door is opened. Not sent if point is not a door.
2287          
2288          */
2289         public  boolean isDoorOpened()
2290  	 {
2291 			  			return myDoorOpened.getValue();
2292 			  		}
2293 				
2294     	
2295 	    /**
2296          * 
2297 			If this is an inventory spot (item is respawned at this point).
2298 		 
2299          */
2300         protected
2301          BooleanProperty 
2302         myInvSpot
2303 					= new
2304 					BooleanProperty
2305 					(
2306 						getId(), 
2307 						"InvSpot", 
2308 						InvSpot, 
2309 						NavPoint.class
2310 					);
2311 					
2312  		/**
2313          * 
2314 			If this is an inventory spot (item is respawned at this point).
2315 		 
2316          */
2317         public  boolean isInvSpot()
2318  	 {
2319 			  			return myInvSpot.getValue();
2320 			  		}
2321 				
2322     	
2323 	    /**
2324          * 
2325 			If this is a player start (players and/or bots are respawned at this point).
2326 		 
2327          */
2328         protected
2329          BooleanProperty 
2330         myPlayerStart
2331 					= new
2332 					BooleanProperty
2333 					(
2334 						getId(), 
2335 						"PlayerStart", 
2336 						PlayerStart, 
2337 						NavPoint.class
2338 					);
2339 					
2340  		/**
2341          * 
2342 			If this is a player start (players and/or bots are respawned at this point).
2343 		 
2344          */
2345         public  boolean isPlayerStart()
2346  	 {
2347 			  			return myPlayerStart.getValue();
2348 			  		}
2349 				
2350  		
2351  	    public String toString() {
2352             return
2353             	super.toString() + "[" +
2354             	
2355 		              			"Id = " + String.valueOf(getId()
2356  	) + " | " + 
2357 		              		
2358 		              			"Location = " + String.valueOf(getLocation()
2359  	) + " | " + 
2360 		              		
2361 		              			"Velocity = " + String.valueOf(getVelocity()
2362  	) + " | " + 
2363 		              		
2364 		              			"ItemSpawned = " + String.valueOf(isItemSpawned()
2365  	) + " | " + 
2366 		              		
2367 		              			"DoorOpened = " + String.valueOf(isDoorOpened()
2368  	) + " | " + 
2369 		              		
2370 		              			"InvSpot = " + String.valueOf(isInvSpot()
2371  	) + " | " + 
2372 		              		
2373 		              			"PlayerStart = " + String.valueOf(isPlayerStart()
2374  	) + " | " + 
2375 		              		
2376 				"]";           		
2377         }
2378  	
2379  		
2380  		public String toHtmlString() {
2381  			return super.toString() + "[<br/>" +
2382             	
2383 		              			"<b>Id</b> = " + String.valueOf(getId()
2384  	) + " <br/> " + 
2385 		              		
2386 		              			"<b>Location</b> = " + String.valueOf(getLocation()
2387  	) + " <br/> " + 
2388 		              		
2389 		              			"<b>Velocity</b> = " + String.valueOf(getVelocity()
2390  	) + " <br/> " + 
2391 		              		
2392 		              			"<b>ItemSpawned</b> = " + String.valueOf(isItemSpawned()
2393  	) + " <br/> " + 
2394 		              		
2395 		              			"<b>DoorOpened</b> = " + String.valueOf(isDoorOpened()
2396  	) + " <br/> " + 
2397 		              		
2398 		              			"<b>InvSpot</b> = " + String.valueOf(isInvSpot()
2399  	) + " <br/> " + 
2400 		              		
2401 		              			"<b>PlayerStart</b> = " + String.valueOf(isPlayerStart()
2402  	) + " <br/> " + 
2403 		              		
2404 				"<br/>]";     
2405 		}
2406  	
2407  		
2408  		// --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=all]) ---
2409         	
2410 		// --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=all]) ---
2411 		
2412 	    // --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=shared+classtype[@name=message]) ---
2413 	        
2414 	    // --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=shared+classtype[@name=message]) ---        	            	
2415  	
2416 		}
2417  	
2418     	
2419     	
2420  	
2421 		@Override
2422 		public IWorldObjectUpdateResult<IWorldObject> update(IWorldObject object) {
2423 			if (object == null)
2424 			{
2425 				return new IWorldObjectUpdateResult.WorldObjectUpdateResult(IWorldObjectUpdateResult.Result.CREATED, this);
2426 			}
2427 			if (!( object instanceof NavPointMessage) ) {
2428 				throw new PogamutException("Can't update different class than NavPointMessage, got class " + object.getClass().getSimpleName() + "!", this);		
2429 			}
2430 			NavPointMessage toUpdate = (NavPointMessage)object;
2431 			
2432 			boolean updated = false;
2433 			
2434 			// UPDATING LOCAL PROPERTIES
2435 			
2436 				if (toUpdate.Visible != isVisible()
2437  	) {
2438 				    toUpdate.Visible=isVisible()
2439  	;
2440 					updated = true;
2441 				}
2442 			
2443          	
2444          	// UPDATING SHARED PROPERTIES
2445          	
2446      		if (getLocation()
2447  	 != null) {
2448      	
2449 	            if (!SafeEquals.equals(toUpdate.Location, getLocation()
2450  	)) {
2451 					toUpdate.Location=getLocation()
2452  	;
2453 					updated = true;
2454 				}
2455 			
2456      		}
2457      	
2458 				if (!SafeEquals.equals(toUpdate.Velocity, getVelocity()
2459  	)) {
2460 					toUpdate.Velocity=getVelocity()
2461  	;
2462 					updated = true;
2463 				}
2464 			
2465 				if (toUpdate.ItemSpawned != isItemSpawned()
2466  	) {
2467 				    toUpdate.ItemSpawned=isItemSpawned()
2468  	;
2469 					updated = true;
2470 				}
2471 			
2472 				if (toUpdate.DoorOpened != isDoorOpened()
2473  	) {
2474 				    toUpdate.DoorOpened=isDoorOpened()
2475  	;
2476 					updated = true;
2477 				}
2478 			
2479 				if (toUpdate.InvSpot != isInvSpot()
2480  	) {
2481 				    toUpdate.InvSpot=isInvSpot()
2482  	;
2483 					updated = true;
2484 				}
2485 			
2486 				if (toUpdate.PlayerStart != isPlayerStart()
2487  	) {
2488 				    toUpdate.PlayerStart=isPlayerStart()
2489  	;
2490 					updated = true;
2491 				}
2492 			
2493          	
2494          	// UPDATE TIME
2495          	toUpdate.SimTime = SimTime;
2496 			
2497 			if (updated) {
2498 				return new IWorldObjectUpdateResult.WorldObjectUpdateResult<IWorldObject>(IWorldObjectUpdateResult.Result.UPDATED, toUpdate);
2499 			} else {
2500 				return new IWorldObjectUpdateResult.WorldObjectUpdateResult<IWorldObject>(IWorldObjectUpdateResult.Result.SAME, toUpdate);
2501 			}
2502 		}
2503 		
2504 		@Override
2505 		public ILocalWorldObjectUpdatedEvent getLocalEvent() {
2506 			return new NavPointLocalImpl.NavPointLocalUpdate
2507     (this.getLocal(), SimTime);
2508 		}
2509 
2510 		@Override
2511 		public ISharedWorldObjectUpdatedEvent getSharedEvent() {
2512 			return new NavPointSharedImpl.NavPointSharedUpdate
2513     (this.getShared(), SimTime, this.getTeamId());
2514 		}
2515 
2516 		@Override
2517 		public IStaticWorldObjectUpdatedEvent getStaticEvent() {
2518 			return new NavPointStaticImpl.NavPointStaticUpdate
2519     (this.getStatic(), SimTime);
2520 		}
2521  	
2522  		
2523  	    public String toString() {
2524             return
2525             	super.toString() + "[" +
2526             	
2527 		              			"Id = " + String.valueOf(getId()
2528  	) + " | " + 
2529 		              		
2530 		              			"Location = " + String.valueOf(getLocation()
2531  	) + " | " + 
2532 		              		
2533 		              			"Velocity = " + String.valueOf(getVelocity()
2534  	) + " | " + 
2535 		              		
2536 		              			"Visible = " + String.valueOf(isVisible()
2537  	) + " | " + 
2538 		              		
2539 		              			"Item = " + String.valueOf(getItem()
2540  	) + " | " + 
2541 		              		
2542 		              			"ItemClass = " + String.valueOf(getItemClass()
2543  	) + " | " + 
2544 		              		
2545 		              			"ItemSpawned = " + String.valueOf(isItemSpawned()
2546  	) + " | " + 
2547 		              		
2548 		              			"DoorOpened = " + String.valueOf(isDoorOpened()
2549  	) + " | " + 
2550 		              		
2551 		              			"Mover = " + String.valueOf(getMover()
2552  	) + " | " + 
2553 		              		
2554 		              			"LiftOffset = " + String.valueOf(getLiftOffset()
2555  	) + " | " + 
2556 		              		
2557 		              			"LiftJumpExit = " + String.valueOf(isLiftJumpExit()
2558  	) + " | " + 
2559 		              		
2560 		              			"NoDoubleJump = " + String.valueOf(isNoDoubleJump()
2561  	) + " | " + 
2562 		              		
2563 		              			"InvSpot = " + String.valueOf(isInvSpot()
2564  	) + " | " + 
2565 		              		
2566 		              			"PlayerStart = " + String.valueOf(isPlayerStart()
2567  	) + " | " + 
2568 		              		
2569 		              			"TeamNumber = " + String.valueOf(getTeamNumber()
2570  	) + " | " + 
2571 		              		
2572 		              			"DomPoint = " + String.valueOf(isDomPoint()
2573  	) + " | " + 
2574 		              		
2575 		              			"DomPointController = " + String.valueOf(getDomPointController()
2576  	) + " | " + 
2577 		              		
2578 		              			"Door = " + String.valueOf(isDoor()
2579  	) + " | " + 
2580 		              		
2581 		              			"LiftCenter = " + String.valueOf(isLiftCenter()
2582  	) + " | " + 
2583 		              		
2584 		              			"LiftExit = " + String.valueOf(isLiftExit()
2585  	) + " | " + 
2586 		              		
2587 		              			"AIMarker = " + String.valueOf(isAIMarker()
2588  	) + " | " + 
2589 		              		
2590 		              			"JumpSpot = " + String.valueOf(isJumpSpot()
2591  	) + " | " + 
2592 		              		
2593 		              			"JumpPad = " + String.valueOf(isJumpPad()
2594  	) + " | " + 
2595 		              		
2596 		              			"JumpDest = " + String.valueOf(isJumpDest()
2597  	) + " | " + 
2598 		              		
2599 		              			"Teleporter = " + String.valueOf(isTeleporter()
2600  	) + " | " + 
2601 		              		
2602 		              			"Rotation = " + String.valueOf(getRotation()
2603  	) + " | " + 
2604 		              		
2605 		              			"RoamingSpot = " + String.valueOf(isRoamingSpot()
2606  	) + " | " + 
2607 		              		
2608 		              			"SnipingSpot = " + String.valueOf(isSnipingSpot()
2609  	) + " | " + 
2610 		              		
2611 		              			"PreferedWeapon = " + String.valueOf(getPreferedWeapon()
2612  	) + " | " + 
2613 		              		
2614 				"]";           		
2615         }
2616  	
2617  		
2618  		public String toHtmlString() {
2619  			return super.toString() + "[<br/>" +
2620             	
2621 		              			"<b>Id</b> = " + String.valueOf(getId()
2622  	) + " <br/> " + 
2623 		              		
2624 		              			"<b>Location</b> = " + String.valueOf(getLocation()
2625  	) + " <br/> " + 
2626 		              		
2627 		              			"<b>Velocity</b> = " + String.valueOf(getVelocity()
2628  	) + " <br/> " + 
2629 		              		
2630 		              			"<b>Visible</b> = " + String.valueOf(isVisible()
2631  	) + " <br/> " + 
2632 		              		
2633 		              			"<b>Item</b> = " + String.valueOf(getItem()
2634  	) + " <br/> " + 
2635 		              		
2636 		              			"<b>ItemClass</b> = " + String.valueOf(getItemClass()
2637  	) + " <br/> " + 
2638 		              		
2639 		              			"<b>ItemSpawned</b> = " + String.valueOf(isItemSpawned()
2640  	) + " <br/> " + 
2641 		              		
2642 		              			"<b>DoorOpened</b> = " + String.valueOf(isDoorOpened()
2643  	) + " <br/> " + 
2644 		              		
2645 		              			"<b>Mover</b> = " + String.valueOf(getMover()
2646  	) + " <br/> " + 
2647 		              		
2648 		              			"<b>LiftOffset</b> = " + String.valueOf(getLiftOffset()
2649  	) + " <br/> " + 
2650 		              		
2651 		              			"<b>LiftJumpExit</b> = " + String.valueOf(isLiftJumpExit()
2652  	) + " <br/> " + 
2653 		              		
2654 		              			"<b>NoDoubleJump</b> = " + String.valueOf(isNoDoubleJump()
2655  	) + " <br/> " + 
2656 		              		
2657 		              			"<b>InvSpot</b> = " + String.valueOf(isInvSpot()
2658  	) + " <br/> " + 
2659 		              		
2660 		              			"<b>PlayerStart</b> = " + String.valueOf(isPlayerStart()
2661  	) + " <br/> " + 
2662 		              		
2663 		              			"<b>TeamNumber</b> = " + String.valueOf(getTeamNumber()
2664  	) + " <br/> " + 
2665 		              		
2666 		              			"<b>DomPoint</b> = " + String.valueOf(isDomPoint()
2667  	) + " <br/> " + 
2668 		              		
2669 		              			"<b>DomPointController</b> = " + String.valueOf(getDomPointController()
2670  	) + " <br/> " + 
2671 		              		
2672 		              			"<b>Door</b> = " + String.valueOf(isDoor()
2673  	) + " <br/> " + 
2674 		              		
2675 		              			"<b>LiftCenter</b> = " + String.valueOf(isLiftCenter()
2676  	) + " <br/> " + 
2677 		              		
2678 		              			"<b>LiftExit</b> = " + String.valueOf(isLiftExit()
2679  	) + " <br/> " + 
2680 		              		
2681 		              			"<b>AIMarker</b> = " + String.valueOf(isAIMarker()
2682  	) + " <br/> " + 
2683 		              		
2684 		              			"<b>JumpSpot</b> = " + String.valueOf(isJumpSpot()
2685  	) + " <br/> " + 
2686 		              		
2687 		              			"<b>JumpPad</b> = " + String.valueOf(isJumpPad()
2688  	) + " <br/> " + 
2689 		              		
2690 		              			"<b>JumpDest</b> = " + String.valueOf(isJumpDest()
2691  	) + " <br/> " + 
2692 		              		
2693 		              			"<b>Teleporter</b> = " + String.valueOf(isTeleporter()
2694  	) + " <br/> " + 
2695 		              		
2696 		              			"<b>Rotation</b> = " + String.valueOf(getRotation()
2697  	) + " <br/> " + 
2698 		              		
2699 		              			"<b>RoamingSpot</b> = " + String.valueOf(isRoamingSpot()
2700  	) + " <br/> " + 
2701 		              		
2702 		              			"<b>SnipingSpot</b> = " + String.valueOf(isSnipingSpot()
2703  	) + " <br/> " + 
2704 		              		
2705 		              			"<b>PreferedWeapon</b> = " + String.valueOf(getPreferedWeapon()
2706  	) + " <br/> " + 
2707 		              		
2708 				"<br/>]";     
2709 		}
2710  	
2711  		
2712  		// --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=all]) ---
2713         	
2714 		// --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=all]) ---
2715 		
2716 	    // --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=base+classtype[@name=message]) ---
2717 	                
2718          	  
2719          		    
2720          		    
2721          	            		   	
2722          	  
2723          		    
2724          		    
2725          	  
2726          	/**
2727 		     * DO NOT USE THIS METHOD! Reserved for GaviaLib (Pogamut core)! It's used
2728 		     * to set correct item instance into the NavPoint.
2729 		     */  	
2730 		    public void setItemInstance(Item item) {
2731 		        this.ItemInstance = item;
2732 		        if (item != null) {
2733 		        	this.Item = item.getId();
2734 		        }
2735 		    } 	
2736 		
2737 	    // --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=base+classtype[@name=message]) ---        	            	
2738  	
2739 		}
2740