Package net.sf.freecol.server.ai.mission
Class ScoutingMission
- java.lang.Object
-
- net.sf.freecol.common.model.FreeColObject
-
- net.sf.freecol.server.ai.AIObject
-
- net.sf.freecol.server.ai.mission.Mission
-
- net.sf.freecol.server.ai.mission.ScoutingMission
-
- All Implemented Interfaces:
java.lang.Comparable<FreeColObject>,ObjectWithId
public final class ScoutingMission extends Mission
Mission for controlling a scout.
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.logging.Loggerloggerprivate LocationprecedingTileA Tile to go to before going to the real target.private static java.lang.StringtagThe tag for this mission.static java.lang.StringTAGprivate LocationtargetThe target for this mission.private static java.lang.StringTARGET_TAG-
Fields inherited from class net.sf.freecol.server.ai.mission.Mission
AIUNITDIED, AIUNITNULL, MINIMUM_TRANSPORT_PRIORITY, NO_MORE_MOVES_LEFT, NO_PATH_TO_TARGET, NORMAL_TRANSPORT_PRIORITY, TARGETINVALID, TARGETNOTFOUND, TARGETNULL, TARGETOWNERSHIP, UNITNOTAPERSON, UNITNOTOFFENSIVE, UNITNOTONMAP
-
Fields inherited from class net.sf.freecol.server.ai.AIObject
initialized
-
Fields inherited from class net.sf.freecol.common.model.FreeColObject
ARRAY_SIZE_TAG, DEFAULT_CLASS_INDEX, fcoComparator, ID_ATTRIBUTE_TAG, PARTIAL_ATTRIBUTE_TAG, VALUE_TAG
-
-
Constructor Summary
Constructors Constructor Description ScoutingMission(AIMain aiMain, AIUnit aiUnit, FreeColXMLReader xr)Creates a newScoutingMissionfrom a reader.ScoutingMission(AIMain aiMain, AIUnit aiUnit, Location target)Creates a mission for the givenAIUnit.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static booleancanScoutNatives(AIUnit aiUnit)Does a supplied unit have horses?MissiondoMission(LogBuilder lb)Performs the mission.static LocationextractTarget(AIUnit aiUnit, PathNode path)Extract a valid target for this mission from a path.static LocationfindMissionTarget(AIUnit aiUnit, int range, boolean deferOK)Finds a suitable scouting target for the supplied unit.LocationfindTarget()Finds a new target for this mission.private static PathNodefindTargetPath(AIUnit aiUnit, int range, boolean deferOK)Finds a suitable scouting target for the supplied unit.intgetBaseTransportPriority()Get the base transport priority for the unit performing this mission.private static GoalDecidergetGoalDecider(AIUnit aiUnit, boolean deferOK)Gets aGoalDeciderfor finding the best colonyTile, optionally falling back to the nearest colony.LocationgetTarget()Gets the target of this mission, if any.java.lang.StringgetXMLTagName()Get the serialization tag for this object.private static java.lang.StringinvalidColonyReason(AIUnit aiUnit, Colony colony)Why is this mission invalid with a given colony target?private static java.lang.StringinvalidIndianSettlementReason(AIUnit aiUnit, IndianSettlement is)Why is this mission invalid with a given native settlement target?static java.lang.StringinvalidMissionReason(AIUnit aiUnit)Why would this mission be invalid with the given AI unit?static java.lang.StringinvalidMissionReason(AIUnit aiUnit, Location loc)Why would this mission be invalid with the given AI unit and location?java.lang.StringinvalidReason()Why is this mission invalid? Mission subclasses must implement this routine, which probably should start by checking invalidAIUnitReason.private static java.lang.StringinvalidSettlementReason(AIUnit aiUnit, Settlement settlement)Is this a valid scouting target because it is a suitable native settlement or an intermediate colony.private static java.lang.StringinvalidTileReason(AIUnit aiUnit, Tile tile)Is this a valid scouting target because it is a suitable tile.private static java.lang.StringinvalidUnitReason(AIUnit aiUnit)Why would this mission be invalid with the given unit.static java.lang.Stringprepare(AIUnit aiUnit)Prepare a unit for this mission.protected voidreadAttributes(FreeColXMLReader xr)Reads the attributes of this object from an XML stream.static intscorePath(AIUnit aiUnit, PathNode path)Evaluate a potential scouting mission for a given unit and path.voidsetTarget(Location target)Sets the target of this mission, if any.protected voidwriteAttributes(FreeColXMLWriter xw)Write the attributes of this object to a stream.-
Methods inherited from class net.sf.freecol.server.ai.mission.Mission
dispose, findCircleTarget, getAIPlayer, getAIRandom, getAIUnit, getBestSettlement, getEuropeanAIPlayer, getPlayer, getTransportDestination, getUnit, invalidAIUnitReason, invalidAttackReason, invalidNewMissionReason, invalidTargetReason, invalidTargetReason, invalidTransportableReason, isOneTime, isTargetReason, isValid, lbAt, lbAttack, lbDodge, lbDone, lbDrop, lbFail, lbMove, lbRetarget, lbWait, moveRandomly, moveRandomlyTurn, resolveBlockage, retargetMission, setInitialized, toString, toXML, travelToTarget
-
Methods inherited from class net.sf.freecol.server.ai.AIObject
addAIObjectWithId, checkIntegrity, checkIntegrity, copyIn, getAIMain, getGame, getSpecification, isDisposed, setGame, setSpecification
-
Methods inherited from class net.sf.freecol.common.model.FreeColObject
addAbility, addFeatures, addModifier, addPropertyChangeListener, addPropertyChangeListener, apply, apply, applyModifiers, applyModifiers, arrayKey, compareIds, compareTo, containsAbilityKey, containsModifierKey, copy, copy, copy, copy, copyInCast, dumpObject, equals, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAbilities, getAbilities, getAbilities, getAbilities, getClassIndex, getDefenceModifiers, getDisplayObject, getFeatureContainer, getFreeColObjectClass, getFreeColObjectClassByName, getId, getIdNumber, getIdType, getIdTypeByName, getModifiers, getModifiers, getModifiers, getModifiers, getObjectClassIndex, getPropertyChangeListeners, getPropertyChangeListeners, getPropertyChangeSupport, getSortedAbilities, getSortedModifiers, getSuffix, getSuffix, hasAbility, hasAbility, hasAbility, hashCode, hasListeners, hasModifier, hasModifier, hasModifier, idEquals, invokeMethod, logFreeColObjects, readChild, readChildren, readFromXML, readFromXMLPartial, removeAbilities, removeAbility, removeFeatures, removeModifier, removeModifiers, removePropertyChangeListener, removePropertyChangeListener, save, save, save, save, serialize, serialize, serialize, serialize, setId, toXML, toXMLPartial, toXMLPartial, writeChildren
-
-
-
-
Field Detail
-
logger
private static final java.util.logging.Logger logger
-
TAG
public static final java.lang.String TAG
- See Also:
- Constant Field Values
-
tag
private static final java.lang.String tag
The tag for this mission.- See Also:
- Constant Field Values
-
target
private Location target
The target for this mission. - A tile with an LCR - A native settlement to talk to the chief of - A player colony to retarget from - An unexplored tile
-
precedingTile
private Location precedingTile
A Tile to go to before going to the real target.
-
TARGET_TAG
private static final java.lang.String TARGET_TAG
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ScoutingMission
public ScoutingMission(AIMain aiMain, AIUnit aiUnit, Location target)
Creates a mission for the givenAIUnit.- Parameters:
aiMain- The main AI-object.aiUnit- TheAIUnitthis mission is created for.target- The targetLocation.
-
ScoutingMission
public ScoutingMission(AIMain aiMain, AIUnit aiUnit, FreeColXMLReader xr) throws javax.xml.stream.XMLStreamException
Creates a newScoutingMissionfrom a reader.- Parameters:
aiMain- The main AI-object.aiUnit- TheAIUnitthis mission is created for.xr- The input stream containing the XML.- Throws:
javax.xml.stream.XMLStreamException- if a problem was encountered during parsing.- See Also:
FreeColObject.readFromXML(net.sf.freecol.common.io.FreeColXMLReader)
-
-
Method Detail
-
canScoutNatives
private static boolean canScoutNatives(AIUnit aiUnit)
Does a supplied unit have horses?- Parameters:
aiUnit- The scoutAIUnitto check.- Returns:
- True if the scout has horses.
-
extractTarget
public static Location extractTarget(AIUnit aiUnit, PathNode path)
Extract a valid target for this mission from a path.- Parameters:
aiUnit- AAIUnitto perform the mission.path- APathNodeto extract a target from, (uses the unit location if null).- Returns:
- A target for this mission, or null if none found.
-
scorePath
public static int scorePath(AIUnit aiUnit, PathNode path)
Evaluate a potential scouting mission for a given unit and path.- Parameters:
aiUnit- TheAIUnitto do the mission.path- APathNodeto take to the target.- Returns:
- A score for the proposed mission.
-
getGoalDecider
private static GoalDecider getGoalDecider(AIUnit aiUnit, boolean deferOK)
Gets aGoalDeciderfor finding the best colonyTile, optionally falling back to the nearest colony.- Parameters:
aiUnit- TheAIUnitthat is searching.deferOK- Enable colony fallback.- Returns:
- A suitable
GoalDecider.
-
findTargetPath
private static PathNode findTargetPath(AIUnit aiUnit, int range, boolean deferOK)
Finds a suitable scouting target for the supplied unit.- Parameters:
aiUnit- TheAIUnitto execute this mission.range- An upper bound on the number of moves.deferOK- Enables deferring to a fallback colony.- Returns:
- A path to the new target, or null if none found.
-
findMissionTarget
public static Location findMissionTarget(AIUnit aiUnit, int range, boolean deferOK)
Finds a suitable scouting target for the supplied unit. Falls back to the best settlement if a path is not found.- Parameters:
aiUnit- TheAIUnitto test.range- An upper bound on the number of moves.deferOK- Enables deferring to a fallback colony.- Returns:
- A
PathNodeto the target, or null if none found.
-
prepare
public static java.lang.String prepare(AIUnit aiUnit)
Prepare a unit for this mission. Allow even experts to proceed even if not mounted.- Parameters:
aiUnit- TheAIUnitto prepare.- Returns:
- A reason why the unit can not perform this mission, or null if none.
-
invalidUnitReason
private static java.lang.String invalidUnitReason(AIUnit aiUnit)
Why would this mission be invalid with the given unit.- Parameters:
aiUnit- TheAIUnitto check.- Returns:
- A reason why the mission would be invalid with the unit, or null if none found.
-
invalidColonyReason
private static java.lang.String invalidColonyReason(AIUnit aiUnit, Colony colony)
Why is this mission invalid with a given colony target?- Parameters:
aiUnit- TheAIUnitto check.colony- The potential targetColony.- Returns:
- A reason for mission invalidity, or null if none found.
-
invalidIndianSettlementReason
private static java.lang.String invalidIndianSettlementReason(AIUnit aiUnit, IndianSettlement is)
Why is this mission invalid with a given native settlement target?- Parameters:
aiUnit- TheAIUnitto check.is- The potential targetIndianSettlement.- Returns:
- A reason for mission invalidity, or null if none found.
-
invalidSettlementReason
private static java.lang.String invalidSettlementReason(AIUnit aiUnit, Settlement settlement)
Is this a valid scouting target because it is a suitable native settlement or an intermediate colony.- Parameters:
aiUnit- TheAIUnitto test.settlement- TheSettlementto test.- Returns:
- A reason why the mission would be invalid, or null if none found.
-
invalidTileReason
private static java.lang.String invalidTileReason(AIUnit aiUnit, Tile tile)
Is this a valid scouting target because it is a suitable tile.- Parameters:
aiUnit- TheAIUnitto test.tile- TheTileto test.- Returns:
- A reason why the mission would be invalid, or null if none found.
-
invalidMissionReason
public static java.lang.String invalidMissionReason(AIUnit aiUnit)
Why would this mission be invalid with the given AI unit?- Parameters:
aiUnit- TheAIUnitto check.- Returns:
- A reason for mission invalidity, or null if none found.
-
invalidMissionReason
public static java.lang.String invalidMissionReason(AIUnit aiUnit, Location loc)
Why would this mission be invalid with the given AI unit and location?- Parameters:
aiUnit- TheAIUnitto check.loc- TheLocationto check.- Returns:
- A reason for invalidity, or null if none found.
-
getBaseTransportPriority
public int getBaseTransportPriority()
Get the base transport priority for the unit performing this mission.- Overrides:
getBaseTransportPriorityin classMission- Returns:
- A base transport priority.
-
getTarget
public Location getTarget()
Gets the target of this mission, if any.
-
setTarget
public void setTarget(Location target)
Sets the target of this mission, if any. The actual target is handled in the missions that really have them, this is a helper to make sure the unit is updated.
-
findTarget
public Location findTarget()
Finds a new target for this mission.- Specified by:
findTargetin classMission- Returns:
- A new target for this mission.
-
invalidReason
public java.lang.String invalidReason()
Why is this mission invalid? Mission subclasses must implement this routine, which probably should start by checking invalidAIUnitReason. A mission can be invalid for a number of subclass-specific reasons. For example: a seek-and-destroy mission could be invalid because of a improved stance towards the targeted player.- Specified by:
invalidReasonin classMission- Returns:
- A reason for mission invalidity, or null if none found.
-
doMission
public Mission doMission(LogBuilder lb)
Performs the mission.
-
writeAttributes
protected void writeAttributes(FreeColXMLWriter xw) throws javax.xml.stream.XMLStreamException
Write the attributes of this object to a stream. To be overridden if required by any object that has attributes and uses the toXML(FreeColXMLWriter, String) call.- Overrides:
writeAttributesin classMission- Parameters:
xw- TheFreeColXMLWriterto write to.- Throws:
javax.xml.stream.XMLStreamException- if there are any problems writing to the stream.
-
readAttributes
protected void readAttributes(FreeColXMLReader xr) throws javax.xml.stream.XMLStreamException
Reads the attributes of this object from an XML stream.- Overrides:
readAttributesin classMission- Parameters:
xr- TheFreeColXMLReaderto read from.- Throws:
javax.xml.stream.XMLStreamException- if there is a problem reading the stream.
-
getXMLTagName
public java.lang.String getXMLTagName()
Get the serialization tag for this object.- Specified by:
getXMLTagNamein classFreeColObject- Returns:
- The tag.
-
-