
            /**
            IMPORTANT !!!
       
            DO NOT EDIT THIS FILE. IT IS GENERATED FROM approriate xml file in xmlresources/gbinfomessages BY
            THE JavaClassesGenerator.xslt. MODIFY THESE FILES INSTEAD OF THIS ONE.
       
            IMPORTANT END !!!
            */
            package
            cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages;
	    		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.*;    
                
            
            /**
              
		Asynchronous message. Sent as response to READY command.
		Information about the game. What type of game is it going to be,
		number of teams, maximum size of teams etc.
	
                          Corresponding GameBots message is 
                          NFO.
                      
             */
            
            public class
            GameInfo
                    extends GBEvent
                
	            	implements IWorldEvent
                        
            {
            
            
            
    	/** Example how the message looks like - used during parser tests. */
    	public static final String PROTOTYPE = 
    		"NFO {Gametype text} {Level text} {WeaponStay False} {TimeLimit 0} {FragLimit 0} {GoalTeamScore 0} {MaxTeams 0} {MaxTeamSize 0} {GamePaused False} {BotsPaused False}";
    
            
            /////// Properties BEGIN
            
        /**
        
			What you are playing (BotDeathMatch, BotTeamGame,
			BotCTFGame,BotDoubleDomination).
		 */
        protected
         String Gametype = 
        	null;
        
        
        /**
        
			What you are playing (BotDeathMatch, BotTeamGame,
			BotCTFGame,BotDoubleDomination).
		 */
        public
        String getGametype() {
            return
         Gametype;
        }
        

        
        /**
        Name of map in game. */
        protected
         String Level = 
        	null;
        
        
        /**
        Name of map in game. */
        public
        String getLevel() {
            return
         Level;
        }
        

        
        /**
        
			If true respawned weapons will stay on the ground after picked up (but bot cannot pickup same weapon twice).
		 */
        protected
         boolean WeaponStay = 
        	false;
        
        
        /**
        
			If true respawned weapons will stay on the ground after picked up (but bot cannot pickup same weapon twice).
		 */
        public
        boolean isWeaponStay() {
            return
         WeaponStay;
        }
        

        
        /**
        
			Maximum time game will last (if tied at end may goe to
			"sudden death overtime" - depends on the game type).
		 */
        protected
         double TimeLimit = 
        	0;
        
        
        /**
        
			Maximum time game will last (if tied at end may goe to
			"sudden death overtime" - depends on the game type).
		 */
        public
        double getTimeLimit() {
            return
         TimeLimit;
        }
        

        
        /**
        
			Number of kills needed to win game (BotDeathMatch only).
		 */
        protected
         int FragLimit = 
        	0;
        
        
        /**
        
			Number of kills needed to win game (BotDeathMatch only).
		 */
        public
        int getFragLimit() {
            return
         FragLimit;
        }
        

        
        /**
        
			Number of points a team needs to win the game (BotTeamGame,
			BotCTFGame, BotDoubleDomination).
		 */
        protected
         double GoalTeamScore = 
        	0;
        
        
        /**
        
			Number of points a team needs to win the game (BotTeamGame,
			BotCTFGame, BotDoubleDomination).
		 */
        public
        double getGoalTeamScore() {
            return
         GoalTeamScore;
        }
        

        
        /**
        
			Max number of teams. Valid team range will be 0 to (MaxTeams
			- 1) (BotTeamGame, BotCTFGame, BotDoubleDomination). Usually
			there will be two teams - 0 and 1.
		 */
        protected
         int MaxTeams = 
        	0;
        
        
        /**
        
			Max number of teams. Valid team range will be 0 to (MaxTeams
			- 1) (BotTeamGame, BotCTFGame, BotDoubleDomination). Usually
			there will be two teams - 0 and 1.
		 */
        public
        int getMaxTeams() {
            return
         MaxTeams;
        }
        

        
        /**
        
			Max number of players per side (BotTeamGame, BotCTFGame,
			BotDoubleDomination).
		 */
        protected
         int MaxTeamSize = 
        	0;
        
        
        /**
        
			Max number of players per side (BotTeamGame, BotCTFGame,
			BotDoubleDomination).
		 */
        public
        int getMaxTeamSize() {
            return
         MaxTeamSize;
        }
        

        
        /**
        
			If the game is paused - nobody can move.
		 */
        protected
         boolean GamePaused = 
        	false;
        
        
        /**
        
			If the game is paused - nobody can move.
		 */
        public
        boolean isGamePaused() {
            return
         GamePaused;
        }
        

        
        /**
        
			If the game is paused just for bots - human controlled
			players can normally move.
		 */
        protected
         boolean BotsPaused = 
        	false;
        
        
        /**
        
			If the game is paused just for bots - human controlled
			players can normally move.
		 */
        public
        boolean isBotsPaused() {
            return
         BotsPaused;
        }
        

        
            /////// 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 GameInfo(GameInfo original) {
                
                     this.Gametype=original.Gametype;
                
                     this.Level=original.Level;
                
                     this.WeaponStay=original.WeaponStay;
                
                     this.TimeLimit=original.TimeLimit;
                
                     this.FragLimit=original.FragLimit;
                
                     this.GoalTeamScore=original.GoalTeamScore;
                
                     this.MaxTeams=original.MaxTeams;
                
                     this.MaxTeamSize=original.MaxTeamSize;
                
                     this.GamePaused=original.GamePaused;
                
                     this.BotsPaused=original.BotsPaused;
                
             }   
             
             
                 /**
                  * Used by Yylex to create empty message then to fill it's protected fields (Yylex is in the same package).
                  */
	             public GameInfo() {
	             }
             
                
                 
            public String toString() {
                return
                
                		super.toString() + " | " +
                		
				               "Gametype = " + 
				               String.valueOf(Gametype) + " | " +
				            
				               "Level = " + 
				               String.valueOf(Level) + " | " +
				            
				               "WeaponStay = " + 
				               String.valueOf(WeaponStay) + " | " +
				            
				               "TimeLimit = " + 
				               String.valueOf(TimeLimit) + " | " +
				            
				               "FragLimit = " + 
				               String.valueOf(FragLimit) + " | " +
				            
				               "GoalTeamScore = " + 
				               String.valueOf(GoalTeamScore) + " | " +
				            
				               "MaxTeams = " + 
				               String.valueOf(MaxTeams) + " | " +
				            
				               "MaxTeamSize = " + 
				               String.valueOf(MaxTeamSize) + " | " +
				            
				               "GamePaused = " + 
				               String.valueOf(GamePaused) + " | " +
				            
				               "BotsPaused = " + 
				               String.valueOf(BotsPaused) + " | " +
				             "";
                	 
             }
             
             public String toHtmlString() {
                return super.toString() +
             
            "<b>Gametype</b> : " + 
            String.valueOf(Gametype) + 
            " <br/> " +
             
            "<b>Level</b> : " + 
            String.valueOf(Level) + 
            " <br/> " +
             
            "<b>WeaponStay</b> : " + 
            String.valueOf(WeaponStay) + 
            " <br/> " +
             
            "<b>TimeLimit</b> : " + 
            String.valueOf(TimeLimit) + 
            " <br/> " +
             
            "<b>FragLimit</b> : " + 
            String.valueOf(FragLimit) + 
            " <br/> " +
             
            "<b>GoalTeamScore</b> : " + 
            String.valueOf(GoalTeamScore) + 
            " <br/> " +
             
            "<b>MaxTeams</b> : " + 
            String.valueOf(MaxTeams) + 
            " <br/> " +
             
            "<b>MaxTeamSize</b> : " + 
            String.valueOf(MaxTeamSize) + 
            " <br/> " +
             
            "<b>GamePaused</b> : " + 
            String.valueOf(GamePaused) + 
            " <br/> " +
             
            "<b>BotsPaused</b> : " + 
            String.valueOf(BotsPaused) + 
            " <br/> " +
             "";
             }            
             
             
             
             }
                         
        