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=local]+classtype[@name=abstract] BEGIN
13  		
14  		// --- IMPORTS FROM extra/code/java/javapart/classcategory[@name=local]+classtype[@name=abstract] END
15      
16   		/**
17           *  
18              				Abstract definition of the local part of the GameBots2004 message PRJ.  
19              			
20           *
21           *  <p></p><p></p>
22           *  Complete message documentation:               
23           *  
24  		Both asynchronous and synchronous message. Incoming projectile that we can see.
25  	
26           */
27   	public abstract class IncomingProjectileLocal 
28    						extends InfoMessage
29    						implements ILocalWorldObject
30    						
31  	    		,ILocalGBViewable
32  	    {
33   	
34      	
35      	
36      	/**
37      	 * Parameter-less contructor for the message.
38      	 */
39  		public IncomingProjectileLocal()
40  		{
41  		}
42  		
43  				// abstract definition of the local-part of the message, no more constructors is needed
44  			
45  	   		
46  			protected long SimTime;
47  				
48  			/**
49  			 * Simulation time in MILLI SECONDS !!!
50  			 */	
51  			@Override
52  			public long getSimTime() {
53  				return SimTime;
54  			}
55  						
56  			/**
57  			 * Used by Yylex to slip correct time of the object or programmatically.
58  			 */
59  			protected void setSimTime(long SimTime) {
60  				this.SimTime = SimTime;
61  			}
62  	   	
63  	    			
64  	    				@Override
65  		    			public abstract 
66  		    			IncomingProjectileLocal clone();
67  		    			
68  						@Override
69  						public Class getCompositeClass() {
70  							return IncomingProjectile.class;
71  						}
72  	
73  						
74  		    			
75   		/**
76           * Unique Id of the projectile. 
77           */
78          public abstract UnrealId getId()
79   	;
80  		    			
81   		/**
82           * Estimated time till impact. 
83           */
84          public abstract double getImpactTime()
85   	;
86  		    			
87   		/**
88           * 
89  			The class of the projectile (so you know what is flying
90  			against you).
91  		 
92           */
93          public abstract boolean isVisible()
94   	;
95  		    			
96      	
97      	
98      	
99      	public IncomingProjectileLocal getLocal() {
100 			return this;
101     	}
102 		public ISharedWorldObject getShared() {
103 		 	throw new UnsupportedOperationException("Could not return LOCAL");
104 		}
105 		public IStaticWorldObject getStatic() {
106 		    throw new UnsupportedOperationException("Could not return LOCAL");
107 		}
108  	
109  		
110 		 	@Override
111 			public ILocalWorldObjectUpdatedEvent createDisappearEvent() {
112 				return new ObjectDisappeared(this, getSimTime());
113 			}
114 			
115 			public static class ObjectDisappeared implements ILocalWorldObjectUpdatedEvent
116 			{
117 				
118 				public ObjectDisappeared(IncomingProjectileLocal obj, long time) {
119 					this.obj = obj;
120 					this.time = time;
121 				}
122 				
123 				private IncomingProjectileLocal obj;
124 				private long time;
125 		
126 				@Override
127 				public WorldObjectId getId() {
128 					return obj.getId();
129 				}
130 		
131 		        /**
132 		         * Simulation time in MILLI SECONDS !!!
133 		         */
134 				@Override
135 				public long getSimTime() {
136 					return time;
137 				}
138 		
139 				@Override
140 				public IWorldObjectUpdateResult<ILocalWorldObject> update(ILocalWorldObject obj) 
141 				{
142 					if (obj == null) {
143 						throw new PogamutException("Can't 'disappear' null!", this);
144 					}
145 					if (!(obj instanceof IncomingProjectileLocalImpl)) {
146 						throw new PogamutException("Can't update different class than IncomingProjectileLocalImpl, got class " + obj.getClass().getSimpleName() + "!", this);
147 					}
148 					IncomingProjectileLocalImpl toUpdate = (IncomingProjectileLocalImpl)obj;
149 					if (toUpdate.Visible) {
150 						toUpdate.Visible = false;
151 						return new IWorldObjectUpdateResult.WorldObjectUpdateResult(IWorldObjectUpdateResult.Result.UPDATED, obj);
152 					} else {
153 						return new IWorldObjectUpdateResult.WorldObjectUpdateResult(IWorldObjectUpdateResult.Result.SAME, obj);
154 					}	
155 				}
156 				
157 			}
158 	
159 		
160  		
161  	    public String toString() {
162             return
163             	super.toString() + "[" +
164             	
165 		              			"Id = " + String.valueOf(getId()
166  	) + " | " + 
167 		              		
168 		              			"ImpactTime = " + String.valueOf(getImpactTime()
169  	) + " | " + 
170 		              		
171 		              			"Visible = " + String.valueOf(isVisible()
172  	) + " | " + 
173 		              		
174 				"]";           		
175         }
176  	
177  		
178  		public String toHtmlString() {
179  			return super.toString() + "[<br/>" +
180             	
181 		              			"<b>Id</b> = " + String.valueOf(getId()
182  	) + " <br/> " + 
183 		              		
184 		              			"<b>ImpactTime</b> = " + String.valueOf(getImpactTime()
185  	) + " <br/> " + 
186 		              		
187 		              			"<b>Visible</b> = " + String.valueOf(isVisible()
188  	) + " <br/> " + 
189 		              		
190 				"<br/>]";     
191 		}
192  	
193  		
194  		// --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=all]) ---
195         	
196 		// --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=all]) ---
197 		
198 	    // --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=local+classtype[@name=abstract]) ---
199 	        
200 	    // --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=local+classtype[@name=abstract]) ---        	            	
201  	
202 		}
203