View Javadoc

1   package cz.cuni.amis.pogamut.defcon.communication.mailbox;
2   
3   import cz.cuni.amis.pogamut.base.communication.worldview.object.WorldObjectId;
4   import cz.cuni.amis.pogamut.defcon.ai.IUnitAI;
5   
6   /**
7    * Interface for a mailbox lower level AIs can use to communicate.
8    * 
9    * @author Radek 'Black_Hand' Pibil
10   * 
11   */
12  public interface IMailBox {
13  
14  	/**
15  	 * Sends a message to all AIs of a given class.
16  	 * 
17  	 * @param targetAIClass
18  	 * @param message
19  	 */
20  	void mail(Class<? extends IUnitAI> targetAIClass, IMessage message);
21  	
22  	/**
23  	 * Sends a message to a specific AI controlling a unit or fleet with a given
24  	 * WorldObjectId.
25  	 * 
26  	 * @param targetId
27  	 * @param message
28  	 */
29  	void mail(WorldObjectId targetId, IMessage message);
30  	
31  	/**
32  	 * Sends a message to a specific AI.
33  	 * 
34  	 * @param ai
35  	 * @param message
36  	 */
37  	void mail(IUnitAI ai, IMessage message);
38  	
39  	/**
40  	 * Registers an AI for mail.
41  	 * 
42  	 * @param ai
43  	 */
44  	void registerAI(IUnitAI ai);
45  
46  	/**
47  	 * Registers an AI for mail.
48  	 * 
49  	 * @param ai
50  	 */
51  	void unregisterAI(IUnitAI ai);
52  
53  }