View Javadoc

1   package cz.cuni.amis.pogamut.udk.bot;
2   
3   import cz.cuni.amis.pogamut.udk.bot.impl.UDKBot;
4   import cz.cuni.amis.pogamut.udk.communication.messages.gbcommands.Initialize;
5   import cz.cuni.amis.pogamut.udk.communication.messages.gbcommands.PasswordReply;
6   import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.BotKilled;
7   import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.ConfigChange;
8   import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.GameInfo;
9   import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.InitedMessage;
10  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.Self;
11  
12  public interface IUDKBotController<BOT extends UDKBot> {
13  	
14  	
15  	/**
16  	 * Called during the construction of the {@link UDKBot} before the GameBots2004 greets the bot even before
17  	 * {@link IUDKBotController#prepareBot(UDKBot)} method.
18  	 * <p><p>
19  	 * <b>NOTE:</b> This is Pogamut's developers reserved method - do not override it and if you do, always use 'super' 
20  	 * to call parent's initializeController.
21       */
22  	public void initializeController(BOT bot);
23  	
24  	/**
25  	 * Called during the construction of the {@link UDKBot} before the GameBots2004 greets the bot.
26       */
27      public void prepareBot(BOT bot);
28  	
29  	
30  	/**
31  	 * Returns password that should be used to access the GameBots2004 server.
32  	 * <p><p>
33  	 * Called only if the bot is challenged by the password request.
34  	 * 
35  	 * @return
36  	 */
37  	public PasswordReply getPassword();
38  	
39      /**
40       * This method is called after handshake with GameBots2004 is over and the GameBots2004
41       * is awaiting the INIT command (Initialize class). Here you have to construct the
42       * Initialize message where you may specify many starting parameters of the bot including:
43       * <ul>
44       * <li>bot's name</li>
45       * <li>bot skill level (aim precision)</li>
46       * <li>bot skin</li>
47       * <li>raycasting</li>
48       * <li>etc. - for complete list see Initialize command</li>
49       * </ul>
50       * This message is then saved to private field initalizeCommand and is accessible
51       * via getInitializeCommand() method if required to probe the starting parameters (even though
52       * they can be changed during the bot's lifetime!).
53       */
54      public Initialize getInitializeCommand();
55  
56      /**
57       * This method is called whenever {@link InitedMessage} is received. Various agent modules are usable since this
58       * method is called.
59       * 
60       * @param gameInfo
61       * @param config
62       * @param init
63       * @param self
64       */
65      public void botInitialized(GameInfo gameInfo, ConfigChange currentConfig, InitedMessage init);
66      
67      /**
68       * This method is called only once whenever first batch of information what the bot can see is received.
69       * <i><i>
70       * It is sort of "first-logic-method" where you may issue commands for the first time and handle everything
71       * else in bot's logic then. It eliminates the need to have 'boolean firstLogic' field inside your bot.
72       * <p><p>
73       * Note that this method has advantage over the {@link IUDKBotController#botInitialized(GameInfo, ConfigChange, InitedMessage)}
74       * that you already have {@link Self} object.
75       * 
76       * @param gameInfo
77       * @param config
78       * @param init
79       * @param self
80       */
81      public void botSpawned(GameInfo gameInfo, ConfigChange currentConfig, InitedMessage init, Self self);
82      
83      /**
84       * Called whenever the bot gets killed inside the game.
85       * 
86       * @param event
87       */
88      public void botKilled(BotKilled event);
89      
90      /**
91       * Called whenever the bot is shutdown (has finished) or killed (not in the game but as the instance).
92       * <p><p>
93       * Use the method to save your work / data collected during the run of the agent.
94       * <p><p>
95       * Pogamut's guarantee that this method is called even if exception happens inside your previous code.
96       */
97      public void botShutdown();
98  
99  }