View Javadoc

1   package cz.cuni.amis.pogamut.defcon.ai;
2   
3   import cz.cuni.amis.pogamut.base.communication.worldview.object.WorldObjectId;
4   import cz.cuni.amis.pogamut.defcon.agent.impl.DefConAgentLogicController;
5   import cz.cuni.amis.pogamut.defcon.communication.mailbox.IMessage;
6   import cz.cuni.amis.pogamut.defcon.communication.messages.commands.DefConCommand;
7   
8   /**
9    * Implementation of common features for all units.
10   * 
11   * @author Radek 'Black_Hand' Pibil
12   * 
13   */
14  public abstract class AbstractAI implements IUnitAI {
15  
16  	public final DefConAgentLogicController<?> logic;
17  	public final int unitId;
18  	public final WorldObjectId worldObjectId;
19  
20  	public AbstractAI(DefConAgentLogicController<?> logic,
21  			WorldObjectId worldObjectId) {
22  
23  		this.logic = logic;
24  		this.worldObjectId = worldObjectId;
25  		this.unitId = Integer.parseInt(worldObjectId.getStringId());
26  	}
27  
28  	@Override
29  	public void receiveMessage(IMessage message) {
30  		return;
31  	}
32  
33  	@Override
34  	public WorldObjectId getId() {
35  		return worldObjectId;
36  	}
37  
38  	/**
39  	 * Simplifies posting of commands.
40  	 * 
41  	 * @param command
42  	 */
43  	protected final void act(DefConCommand command) {
44  		logic.getAct().act(command);
45  	}
46  
47  	@Override
48  	public void dispose() {
49  		logic.getMailBox().unregisterAI(this);
50  	}
51  }