package net.sf.colossus.ai.objectives;
import net.sf.colossus.util.ValueRecorder;
/**
* Interface for a tactical (i.e. when fighting on battlelands) objective.
* The idea is to set 'objectives' for tha AI to attain when fighting,
* and then try to bias the moves of the AIs toward achieving said objectives.
* @author Romain Dolbeau
*/
public interface TacticalObjective
{
/** Whether the objective is already achieved
*
* @return Whether the objective is already achieved
*/
boolean objectiveAttained();
/** How much does the 'current situation' contributes to the objective.
* The actual value is currently added to the overall evaluation
* of the whole legion move.
* @return How much does he 'current situation' contributes to the objective
*/
ValueRecorder situationContributeToTheObjective();
/** Get the current priority of this objective.
*
* @return The current priority of this objective.
*/
float getPriority();
/** Get the description of this objective.
*
* @return The description of this objective.
*/
String getDescription();
/** Change the priority of this objective.
*
* @param newPriority The new priority.
* @return The old priority.
*/
float changePriority(float newPriority);
}