
            /**
            IMPORTANT !!!
       
            DO NOT EDIT THIS FILE. IT IS GENERATED FROM approriate xml file in xmlresources/gbcommands BY
            THE JavaClassesGenerator.xslt. MODIFY THESE FILES INSTEAD OF THIS ONE.
       
            IMPORTANT END !!!
            */
            package
            cz.cuni.amis.pogamut.ut2004.communication.messages.gbcommands;
	    		import java.util.*;    
    import javax.vecmath.*;    
    import cz.cuni.amis.pogamut.base.communication.messages.*;    
    import cz.cuni.amis.pogamut.base.agent.worldview.*;    
    import cz.cuni.amis.pogamut.base.agent.worldview.objects.*;    
    import cz.cuni.amis.pogamut.base.communication.translator.*;    
    import cz.cuni.amis.pogamut.ut2004.communication.translator.itemdescriptor.*;    
    import cz.cuni.amis.pogamut.ut2004.communication.messages.ItemType.Category;    
    import cz.cuni.amis.pogamut.base.exceptions.*;    
    import cz.cuni.amis.pogamut.base3d.worldview.objects.*;    
    import cz.cuni.amis.pogamut.ut2004.communication.messages.*;    
    import cz.cuni.amis.pogamut.ut2004.agent.worldview.objects.*;    
                
            
            /**
              
		The bot will start moving towards FirstLocation. After reaching it will continue
		to SecondLocation (no delay). If no SecondLocation specified, the movement will end at
		FirstLocation point.
		You can specify some location or object you will be facing during the movement (if none specified,
		the bot will start looking towards its destination point). Object	is specified by UnrealId. 
		Player Ids will work, all NavPoints Ids and Movers. Respawned items should work too, but not all of 
		the items have unique Id, thus item Ids are not recommended.		
	
                          Corresponding GameBots command is 
                          MOVE.
                      
             */
            
            public class
            Move extends
        CommandMessage
                        
            {
            
            
            
            /**
              Creates new instance of command Move.
              
		The bot will start moving towards FirstLocation. After reaching it will continue
		to SecondLocation (no delay). If no SecondLocation specified, the movement will end at
		FirstLocation point.
		You can specify some location or object you will be facing during the movement (if none specified,
		the bot will start looking towards its destination point). Object	is specified by UnrealId. 
		Player Ids will work, all NavPoints Ids and Movers. Respawned items should work too, but not all of 
		the items have unique Id, thus item Ids are not recommended.		
	Corresponding GameBots message for this command is 
              MOVE.
                  @param FirstLocation The bot will start moving to this location first. If not specified, the bot won't move (even if SecondLocation is specified).   
                  @param SecondLocation After reaching FirstLocation, the bot will start moving to location specified here. If not specified the movement will quit at FirstLocation point.
                  @param FocusTarget Here you can specify UnrealId of the object you want to face during movement (typically enemy player you want to shoot at). Player Ids will work, all NavPoints Ids, Movers and some of the items (with unique Id). This attribute is parsed before FocusLocation attribute and if set FocusLocation attribute will be ignored.
                  @param FocusLocation Here you can specify location you want to face during movement. This attribute is parsed after FocusTarget attribute and will be ignored if FocusTarget is set.
              */
             public Move(
                Location FirstLocation,  Location SecondLocation,  UnrealId FocusTarget,  Location FocusLocation) {
                    
                    this.FirstLocation = FirstLocation;
                
                    this.SecondLocation = SecondLocation;
                
                    this.FocusTarget = FocusTarget;
                
                    this.FocusLocation = FocusLocation;
                
                }
               
            
            		/**
		             Creates new instance of command Move.
		             
		The bot will start moving towards FirstLocation. After reaching it will continue
		to SecondLocation (no delay). If no SecondLocation specified, the movement will end at
		FirstLocation point.
		You can specify some location or object you will be facing during the movement (if none specified,
		the bot will start looking towards its destination point). Object	is specified by UnrealId. 
		Player Ids will work, all NavPoints Ids and Movers. Respawned items should work too, but not all of 
		the items have unique Id, thus item Ids are not recommended.		
	Corresponding GameBots message for this command is 
		             MOVE.
		             <p></p>WARNING: this is empty-command constructor, you have to use setters to fill it up!
		             */
            		public  Move() {
            		}
            	
            
            /////// Properties BEGIN
            
        /**
        The bot will start moving to this location first. If not specified, the bot won't move (even if SecondLocation is specified).    */
        protected
         Location FirstLocation = 
        	null;
        
        
        /**
        The bot will start moving to this location first. If not specified, the bot won't move (even if SecondLocation is specified).    */
        public
        Location getFirstLocation() {
            return
         FirstLocation;
        }
        

        
            /**         
        The bot will start moving to this location first. If not specified, the bot won't move (even if SecondLocation is specified).    */
        public Move setFirstLocation(Location FirstLocation) {
            this.FirstLocation = FirstLocation;
            return this;
            }
       
        /**
        After reaching FirstLocation, the bot will start moving to location specified here. If not specified the movement will quit at FirstLocation point. */
        protected
         Location SecondLocation = 
        	null;
        
        
        /**
        After reaching FirstLocation, the bot will start moving to location specified here. If not specified the movement will quit at FirstLocation point. */
        public
        Location getSecondLocation() {
            return
         SecondLocation;
        }
        

        
            /**         
        After reaching FirstLocation, the bot will start moving to location specified here. If not specified the movement will quit at FirstLocation point. */
        public Move setSecondLocation(Location SecondLocation) {
            this.SecondLocation = SecondLocation;
            return this;
            }
       
        /**
        Here you can specify UnrealId of the object you want to face during movement (typically enemy player you want to shoot at). Player Ids will work, all NavPoints Ids, Movers and some of the items (with unique Id). This attribute is parsed before FocusLocation attribute and if set FocusLocation attribute will be ignored. */
        protected
         UnrealId FocusTarget = 
        	null;
        
        
        /**
        Here you can specify UnrealId of the object you want to face during movement (typically enemy player you want to shoot at). Player Ids will work, all NavPoints Ids, Movers and some of the items (with unique Id). This attribute is parsed before FocusLocation attribute and if set FocusLocation attribute will be ignored. */
        public
        UnrealId getFocusTarget() {
            return
         FocusTarget;
        }
        

        
            /**         
        Here you can specify UnrealId of the object you want to face during movement (typically enemy player you want to shoot at). Player Ids will work, all NavPoints Ids, Movers and some of the items (with unique Id). This attribute is parsed before FocusLocation attribute and if set FocusLocation attribute will be ignored. */
        public Move setFocusTarget(UnrealId FocusTarget) {
            this.FocusTarget = FocusTarget;
            return this;
            }
       
        /**
        Here you can specify location you want to face during movement. This attribute is parsed after FocusTarget attribute and will be ignored if FocusTarget is set. */
        protected
         Location FocusLocation = 
        	null;
        
        
        /**
        Here you can specify location you want to face during movement. This attribute is parsed after FocusTarget attribute and will be ignored if FocusTarget is set. */
        public
        Location getFocusLocation() {
            return
         FocusLocation;
        }
        

        
            /**         
        Here you can specify location you want to face during movement. This attribute is parsed after FocusTarget attribute and will be ignored if FocusTarget is set. */
        public Move setFocusLocation(Location FocusLocation) {
            this.FocusLocation = FocusLocation;
            return this;
            }
       
            /////// Properties END
            
            /////// Extra Java code BEGIN
                        	
            	/////// Additional code from xslt BEGIN            	 
            			
            		
            		
            	/////// Additional code from xslt END            
				                    
	            /////// Extra Java from XML BEGIN
            		
            	/////// Extra Java from XML END
            	    
            /////// Extra Java code END
            
            
            
            /**
              * Cloning constructor.
              */
             public Move(Move original) {
                
                     this.FirstLocation=original.FirstLocation;
                
                     this.SecondLocation=original.SecondLocation;
                
                     this.FocusTarget=original.FocusTarget;
                
                     this.FocusLocation=original.FocusLocation;
                
             }   
             
             
                
                 
            public String toString() {
                return
                
                    	super.toString();
                     
             }
             
             public String toHtmlString() {
                return super.toString() +
             
            "<b>FirstLocation</b> : " + 
            String.valueOf(FirstLocation) + 
            " <br/> " +
             
            "<b>SecondLocation</b> : " + 
            String.valueOf(SecondLocation) + 
            " <br/> " +
             
            "<b>FocusTarget</b> : " + 
            String.valueOf(FocusTarget) + 
            " <br/> " +
             
            "<b>FocusLocation</b> : " + 
            String.valueOf(FocusLocation) + 
            " <br/> " +
             "";
             }            
             
             
             
                 public String toMessage() {
              		StringBuffer buf = new StringBuffer();
              		buf.append("MOVE");
              		
                                if (FirstLocation != null) {
                                    buf.append(" {FirstLocation " + 
                                        FirstLocation.getX() + "," + 
                                        FirstLocation.getY() + "," + 
                                        FirstLocation.getZ() + "}");
                                }
                            
                                if (SecondLocation != null) {
                                    buf.append(" {SecondLocation " + 
                                        SecondLocation.getX() + "," + 
                                        SecondLocation.getY() + "," + 
                                        SecondLocation.getZ() + "}");
                                }
                            
		    					if (FocusTarget != null) {
		    						buf.append(" {FocusTarget " + FocusTarget.getUnrealId() + "}");
		    					}
		    				
                                if (FocusLocation != null) {
                                    buf.append(" {FocusLocation " + 
                                        FocusLocation.getX() + "," + 
                                        FocusLocation.getY() + "," + 
                                        FocusLocation.getZ() + "}");
                                }
                                        
            		return buf.toString();
            }
             
             }
                         
        