package ai.general;
/**
* \brief Objects that ai units can interact with
* @author Jeff Bernard
*
*/
public abstract class GeneralAIObject {
/**
* Updates the orders of a unit
* * @param unit the unit
* @param ai the ai
*/
public abstract void update_orders(GeneralAIUnit unit, GeneralAI ai);
/**
* Orders a unit to interact with this object
* @param unit the unit
* @param ai the ai
*/
public abstract void order_unit(GeneralAIUnit unit, GeneralAI ai);
/**
* Calculates the distance from the unit to this object
* @param unit the unit
* @param ai the ai
* @return the distance
*/
public abstract int distance(GeneralAIUnit unit, GeneralAI ai);
/**
* Some kind of action succeeded
* @param unit the unit
* @param ai the ai
* @param type the type of the action
*/
public abstract void action_succeeded(GeneralAIUnit unit, GeneralAI ai, int type);
/**
* This unit has been removed from the object
* @param unit
*/
public abstract void remove(GeneralAIUnit unit, GeneralAI ai);
}