org.mars_sim.msp.simulation.person.ai.mission
Class RoverMission

java.lang.Object
  extended by org.mars_sim.msp.simulation.person.ai.mission.Mission
      extended by org.mars_sim.msp.simulation.person.ai.mission.TravelMission
          extended by org.mars_sim.msp.simulation.person.ai.mission.VehicleMission
              extended by org.mars_sim.msp.simulation.person.ai.mission.RoverMission
All Implemented Interfaces:
java.io.Serializable, UnitListener
Direct Known Subclasses:
CollectResourcesMission, Exploration, Mining, RescueSalvageVehicle, Trade, TravelToSettlement

public abstract class RoverMission
extends VehicleMission

A mission that involves driving a rover vehicle along a series of navpoints.

See Also:
Serialized Form

Field Summary
protected static int MIN_PEOPLE
           
static java.lang.String STARTING_SETTLEMENT_EVENT
           
 
Fields inherited from class org.mars_sim.msp.simulation.person.ai.mission.VehicleMission
DISEMBARKING, EMBARKING, equipmentNeededCache, loadedFlag, OPERATOR_EVENT, TRAVELLING, VEHICLE_EVENT
 
Fields inherited from class org.mars_sim.msp.simulation.person.ai.mission.TravelMission
AT_NAVPOINT, DISTANCE_EVENT, NAVPOINTS_EVENT, TRAVEL_STATUS_EVENT, TRAVEL_TO_NAVPOINT
 
Fields inherited from class org.mars_sim.msp.simulation.person.ai.mission.Mission
ADD_MEMBER_EVENT, ASSOCIATED_SETTLEMENT_EVENT, CAPACITY_EVENT, DESCRIPTION_EVENT, END_MISSION_EVENT, MIN_PEOPLE_EVENT, NAME_EVENT, PHASE_DESCRIPTION_EVENT, PHASE_EVENT, REMOVE_MEMBER_EVENT
 
Constructor Summary
protected RoverMission(java.lang.String name, Person startingPerson)
          Constructor
protected RoverMission(java.lang.String name, Person startingPerson, int minPeople)
          Constructor with min people
protected RoverMission(java.lang.String name, Person startingPerson, int minPeople, Rover rover)
          Constructor with min people and rover.
 
Method Summary
protected static boolean areVehiclesAvailable(Settlement settlement)
          Checks to see if any vehicles are available at a settlement.
protected static boolean atLeastOnePersonRemainingAtSettlement(Settlement settlement, Person person)
          Checks to see if at least one inhabitant a settlement is remaining there.
 void endMission(java.lang.String reason)
          Finalizes the mission
abstract  java.util.Map<java.lang.Class,java.lang.Integer> getEquipmentNeededForRemainingMission(boolean useBuffer)
          Gets the number and types of equipment needed for the mission.
protected  OperateVehicle getOperateVehicleTask(Person person, java.lang.String lastOperateVehicleTaskPhase)
          Gets a new instance of an OperateVehicle task for the person.
 java.util.Map<Resource,java.lang.Number> getResourcesNeededForTrip(boolean useBuffer, boolean parts, double distance)
          Gets a map of all resources needed for the trip.
 Rover getRover()
          Gets the mission's rover if there is one.
 Settlement getStartingSettlement()
          Gets the starting settlement.
protected static Vehicle getVehicleWithGreatestRange(Settlement settlement)
          Gets the available vehicle at the settlement with the greatest range.
protected  boolean hasDangerousMedicalProblemAtAssociatedSettlement()
          Checks if there is only one person at the associated settlement and he/she has a serious medical problem.
protected  boolean hasEmergency()
          Checks if the mission has an emergency situation.
protected  boolean isEveryoneInRover()
          Checks that everyone in the mission is aboard the rover.
protected  boolean isNoOneInRover()
          Checks that no one in the mission is aboard the rover.
protected  boolean isRoverInAGarage()
          Checks if the rover is currently in a garage or not.
protected  boolean isUsableVehicle(Vehicle newVehicle)
          Checks if vehicle is usable for this mission.
protected static boolean minAvailablePeopleAtSettlement(Settlement settlement, int minNum)
          Checks to see if at least a minimum number of people are available for a mission at a settlement.
protected  void performDisembarkToSettlementPhase(Person person, Settlement disembarkSettlement)
          Performs the disembark to settlement phase of the mission.
protected  void performEmbarkFromSettlementPhase(Person person)
          Performs the embark from settlement phase of the mission.
protected  void performPhase(Person person)
          The person performs the current phase of the mission.
protected  void setStartingSettlement(Settlement startingSettlement)
          Sets the starting settlement.
 
Methods inherited from class org.mars_sim.msp.simulation.person.ai.mission.VehicleMission
compareVehicles, determineEmergencyDestination, determineNewPhase, findClosestSettlement, getAverageVehicleSpeedForOperators, getEquipmentToLoad, getEstimatedRemainingMissionTime, getEstimatedTripTime, getFuelNeededForTrip, getLegETA, getPartsNeededForTrip, getResourcesNeededForRemainingMission, getResourcesToLoad, getTotalDistanceTravelled, getVehicle, hasEmbarkingMissions, hasEnoughResourcesForRemainingMission, hasVehicle, isVehicleLoadable, isVehicleLoaded, leaveVehicle, performTravelPhase, reserveVehicle, setEmergencyBeacon, setVehicle, timePassing, unitUpdate, updateTravelDestination
 
Methods inherited from class org.mars_sim.msp.simulation.person.ai.mission.TravelMission
addNavpoint, clearRemainingNavpoints, getCurrentLegDistance, getCurrentLegRemainingDistance, getCurrentLegStartingTime, getCurrentNavpoint, getCurrentNavpointIndex, getNavpoint, getNavpointIndex, getNextNavpoint, getNextNavpointIndex, getNumberOfNavpoints, getPreviousNavpoint, getTotalDistance, getTotalRemainingDistance, getTravelStatus, reachedNextNode, setNavpoint, setNextNavpointIndex, startTravelToNextNode
 
Methods inherited from class org.mars_sim.msp.simulation.person.ai.mission.Mission
addMissionListener, addPerson, addPhase, assignTask, associateAllMembersWithSettlement, fireMissionUpdate, fireMissionUpdate, getAssociatedSettlement, getCurrentMissionLocation, getDescription, getMinPeople, getMissionCapacity, getMissionQualification, getName, getNewMissionProbability, getPeople, getPeopleNumber, getPhase, getPhaseDescription, getPhaseEnded, hasDangerousMedicalProblems, hasDangerousMedicalProblemsAllCrew, hasEmergencyAllCrew, hasPerson, isCapableOfMission, isDone, performMission, recruitPeopleForMission, removeMissionListener, removePerson, setDescription, setMinPeople, setMissionCapacity, setName, setPhase, setPhaseDescription, setPhaseEnded, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

STARTING_SETTLEMENT_EVENT

public static final java.lang.String STARTING_SETTLEMENT_EVENT
See Also:
Constant Field Values

MIN_PEOPLE

protected static final int MIN_PEOPLE
See Also:
Constant Field Values
Constructor Detail

RoverMission

protected RoverMission(java.lang.String name,
                       Person startingPerson)
                throws MissionException
Constructor

Parameters:
name - the name of the mission.
startingPerson - the person starting the mission.
Throws:
MissionException - if error constructing mission.

RoverMission

protected RoverMission(java.lang.String name,
                       Person startingPerson,
                       int minPeople)
                throws MissionException
Constructor with min people

Parameters:
name - the name of the mission.
startingPerson - the person starting the mission.
minPeople - the minimum number of people required for mission.
Throws:
MissionException - if error constructing mission.

RoverMission

protected RoverMission(java.lang.String name,
                       Person startingPerson,
                       int minPeople,
                       Rover rover)
                throws MissionException
Constructor with min people and rover.

Parameters:
name - the name of the mission.
startingPerson - the person starting the mission.
minPeople - the minimum number of people required for mission.
rover - the rover to use on the mission.
Throws:
MissionException - if error constructing mission.
Method Detail

getRover

public final Rover getRover()
Gets the mission's rover if there is one.

Returns:
vehicle or null if none.

setStartingSettlement

protected final void setStartingSettlement(Settlement startingSettlement)
Sets the starting settlement.

Parameters:
startingSettlement - the new starting settlement

getStartingSettlement

public final Settlement getStartingSettlement()
Gets the starting settlement.

Returns:
starting settlement

performPhase

protected void performPhase(Person person)
                     throws MissionException
The person performs the current phase of the mission.

Overrides:
performPhase in class VehicleMission
Parameters:
person - the person performing the phase.
Throws:
MissionException - if problem performing the phase.

getVehicleWithGreatestRange

protected static final Vehicle getVehicleWithGreatestRange(Settlement settlement)
                                                    throws java.lang.Exception
Gets the available vehicle at the settlement with the greatest range.

Parameters:
settlement - the settlement to check.
Returns:
vehicle or null if none available.
Throws:
java.lang.Exception - if error finding vehicles.

areVehiclesAvailable

protected static boolean areVehiclesAvailable(Settlement settlement)
Checks to see if any vehicles are available at a settlement.

Parameters:
settlement - the settlement to check.
Returns:
true if vehicles are available.

isUsableVehicle

protected boolean isUsableVehicle(Vehicle newVehicle)
                           throws MissionException
Checks if vehicle is usable for this mission. (This method should be overridden by children)

Overrides:
isUsableVehicle in class VehicleMission
Parameters:
newVehicle - the vehicle to check
Returns:
true if vehicle is usable.
Throws:
MissionException - if problem determining if vehicle is usable.

isEveryoneInRover

protected final boolean isEveryoneInRover()
Checks that everyone in the mission is aboard the rover.

Returns:
true if everyone is aboard

isNoOneInRover

protected final boolean isNoOneInRover()
Checks that no one in the mission is aboard the rover.

Returns:
true if no one is aboard

isRoverInAGarage

protected boolean isRoverInAGarage()
Checks if the rover is currently in a garage or not.

Returns:
true if rover is in a garage.

performEmbarkFromSettlementPhase

protected void performEmbarkFromSettlementPhase(Person person)
                                         throws MissionException
Performs the embark from settlement phase of the mission.

Specified by:
performEmbarkFromSettlementPhase in class VehicleMission
Parameters:
person - the person currently performing the mission
Throws:
MissionException - if error performing phase.

performDisembarkToSettlementPhase

protected void performDisembarkToSettlementPhase(Person person,
                                                 Settlement disembarkSettlement)
                                          throws MissionException
Performs the disembark to settlement phase of the mission.

Specified by:
performDisembarkToSettlementPhase in class VehicleMission
Parameters:
person - the person currently performing the mission.
disembarkSettlement - the settlement to be disembarked to.
Throws:
MissionException - if error performing phase.

getOperateVehicleTask

protected OperateVehicle getOperateVehicleTask(Person person,
                                               java.lang.String lastOperateVehicleTaskPhase)
                                        throws MissionException
Gets a new instance of an OperateVehicle task for the person.

Specified by:
getOperateVehicleTask in class VehicleMission
Parameters:
person - the person operating the vehicle.
Returns:
an OperateVehicle task for the person.
Throws:
MissionException - if error creating OperateVehicle task.

atLeastOnePersonRemainingAtSettlement

protected static boolean atLeastOnePersonRemainingAtSettlement(Settlement settlement,
                                                               Person person)
Checks to see if at least one inhabitant a settlement is remaining there.

Parameters:
settlement - the settlement to check.
person - the person checking
Returns:
true if at least one person left at settlement.

minAvailablePeopleAtSettlement

protected static boolean minAvailablePeopleAtSettlement(Settlement settlement,
                                                        int minNum)
Checks to see if at least a minimum number of people are available for a mission at a settlement.

Parameters:
settlement - the settlement to check.
minNum - minimum number of people required.
Returns:
true if minimum people available.

hasDangerousMedicalProblemAtAssociatedSettlement

protected final boolean hasDangerousMedicalProblemAtAssociatedSettlement()
Checks if there is only one person at the associated settlement and he/she has a serious medical problem.

Returns:
true if serious medical problem

hasEmergency

protected final boolean hasEmergency()
Checks if the mission has an emergency situation.

Overrides:
hasEmergency in class Mission
Returns:
true if emergency.

getResourcesNeededForTrip

public java.util.Map<Resource,java.lang.Number> getResourcesNeededForTrip(boolean useBuffer,
                                                                          boolean parts,
                                                                          double distance)
                                                                   throws MissionException
Gets a map of all resources needed for the trip.

Overrides:
getResourcesNeededForTrip in class VehicleMission
Parameters:
useBuffer - should a buffer be used when determining resources?
parts - include parts.
distance - the distance of the trip.
Returns:
map of amount and item resources and their Double amount or Integer number.
Throws:
MissionException - if error determining resources.

getEquipmentNeededForRemainingMission

public abstract java.util.Map<java.lang.Class,java.lang.Integer> getEquipmentNeededForRemainingMission(boolean useBuffer)
                                                                                                throws MissionException
Gets the number and types of equipment needed for the mission.

Specified by:
getEquipmentNeededForRemainingMission in class Mission
Parameters:
useBuffer - use time buffers in estimation if true.
Returns:
map of equipment class and Integer number.
Throws:
MissionException - if error determining needed equipment.

endMission

public void endMission(java.lang.String reason)
Finalizes the mission

Overrides:
endMission in class VehicleMission
Parameters:
reason - the reason of ending the mission.