org.mars_sim.msp.core.person.ai.mission
Class BiologyStudyFieldMission

java.lang.Object
  extended by org.mars_sim.msp.core.person.ai.mission.Mission
      extended by org.mars_sim.msp.core.person.ai.mission.TravelMission
          extended by org.mars_sim.msp.core.person.ai.mission.VehicleMission
              extended by org.mars_sim.msp.core.person.ai.mission.RoverMission
                  extended by org.mars_sim.msp.core.person.ai.mission.BiologyStudyFieldMission
All Implemented Interfaces:
java.io.Serializable, UnitListener

public class BiologyStudyFieldMission
extends RoverMission
implements java.io.Serializable

A mission to do biology research at a remote field location for a scientific study.

See Also:
Serialized Form

Field Summary
static java.lang.String DEFAULT_DESCRIPTION
           
static double FIELD_SITE_TIME
           
static java.lang.String RESEARCH_SITE
           
 
Fields inherited from class org.mars_sim.msp.core.person.ai.mission.RoverMission
STARTING_SETTLEMENT_EVENT
 
Fields inherited from class org.mars_sim.msp.core.person.ai.mission.VehicleMission
DISEMBARKING, EMBARKING, equipmentNeededCache, loadedFlag, OPERATOR_EVENT, TRAVELLING, VEHICLE_EVENT
 
Fields inherited from class org.mars_sim.msp.core.person.ai.mission.TravelMission
AT_NAVPOINT, DISTANCE_EVENT, NAVPOINTS_EVENT, TRAVEL_STATUS_EVENT, TRAVEL_TO_NAVPOINT
 
Fields inherited from class org.mars_sim.msp.core.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
BiologyStudyFieldMission(java.util.Collection<Person> members, Settlement startingSettlement, Person leadResearcher, ScientificStudy study, Rover rover, Coordinates fieldSite, java.lang.String description)
          Constructor with explicit information.
BiologyStudyFieldMission(Person startingPerson)
          Constructor
 
Method Summary
protected  void determineNewPhase()
          Determines a new phase for the mission when the current phase has ended.
 void endResearchAtFieldSite()
          Ends the research at a field site.
 Settlement getAssociatedSettlement()
          Gets the settlement associated with the mission.
 java.util.Map<java.lang.Class,java.lang.Integer> getEquipmentNeededForRemainingMission(boolean useBuffer)
          Gets the number and types of equipment needed for the mission.
 double getEstimatedRemainingMissionTime(boolean useBuffer)
          Gets the estimated time remaining for the mission.
protected  double getMissionQualification(Person person)
          Gets the mission qualification value for the person.
static double getNewMissionProbability(Person person)
          Gets the weighted probability that a given person would start this mission.
 java.util.Map<Resource,java.lang.Number> getResourcesNeededForRemainingMission(boolean useBuffer, boolean parts)
          Gets the number and amounts of resources needed for the mission.
static double getTotalTripTimeLimit(Rover rover, int memberNum, boolean useBuffer)
          Gets the time limit of the trip based on life support capacity.
protected  boolean isCapableOfMission(Person person)
          Checks to see if a person is capable of joining a mission.
protected  void performPhase(Person person)
          The person performs the current phase of the mission.
protected  void recruitPeopleForMission(Person startingPerson)
          Recruits new people into the mission.
 
Methods inherited from class org.mars_sim.msp.core.person.ai.mission.RoverMission
areVehiclesAvailable, atLeastOnePersonRemainingAtSettlement, endMission, getOperateVehicleTask, getResourcesNeededForTrip, getRover, getStartingSettlement, getVehicleWithGreatestRange, hasBackupRover, hasDangerousMedicalProblemAtAssociatedSettlement, hasEmergency, hasEnoughBasicResources, isEveryoneInRover, isNoOneInRover, isRoverInAGarage, isUsableVehicle, minAvailablePeopleAtSettlement, performDisembarkToSettlementPhase, performEmbarkFromSettlementPhase, setStartingSettlement
 
Methods inherited from class org.mars_sim.msp.core.person.ai.mission.VehicleMission
compareVehicles, determineEmergencyDestination, findClosestSettlement, getAverageVehicleSpeedForOperators, getEquipmentToLoad, getEstimatedTripTime, getFuelNeededForTrip, getLegETA, getPartsNeededForTrip, getResourcesToLoad, getTotalDistanceTravelled, getVehicle, hasEmbarkingMissions, hasEnoughResourcesForRemainingMission, hasVehicle, isVehicleLoadable, isVehicleLoaded, leaveVehicle, performTravelPhase, reserveVehicle, setEmergencyBeacon, setVehicle, timePassing, unitUpdate, updateTravelDestination
 
Methods inherited from class org.mars_sim.msp.core.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.core.person.ai.mission.Mission
addMissionListener, addPerson, addPhase, assignTask, associateAllMembersWithSettlement, fireMissionUpdate, fireMissionUpdate, getCurrentMissionLocation, getDescription, getMinPeople, getMissionCapacity, getName, getPeople, getPeopleNumber, getPhase, getPhaseDescription, getPhaseEnded, hasDangerousMedicalProblems, hasDangerousMedicalProblemsAllCrew, hasEmergencyAllCrew, hasPerson, isDone, performMission, 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

DEFAULT_DESCRIPTION

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

RESEARCH_SITE

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

FIELD_SITE_TIME

public static final double FIELD_SITE_TIME
See Also:
Constant Field Values
Constructor Detail

BiologyStudyFieldMission

public BiologyStudyFieldMission(Person startingPerson)
                         throws MissionException
Constructor

Parameters:
startingPerson - the person starting the mission.
Throws:
MissionException - if problem constructing mission.

BiologyStudyFieldMission

public BiologyStudyFieldMission(java.util.Collection<Person> members,
                                Settlement startingSettlement,
                                Person leadResearcher,
                                ScientificStudy study,
                                Rover rover,
                                Coordinates fieldSite,
                                java.lang.String description)
                         throws MissionException
Constructor with explicit information.

Parameters:
members - the mission members.
startingSettlement - the settlement the mission starts at.
leadResearcher - the lead researcher
study - the scientific study.
rover - the rover used by the mission.
fieldSite - the field site to research.
description - the mission description.
Throws:
MissionException - if error creating mission.
Method Detail

getNewMissionProbability

public static double getNewMissionProbability(Person person)
Gets the weighted probability that a given person would start this mission.

Parameters:
person - the given person
Returns:
the weighted probability

getTotalTripTimeLimit

public static double getTotalTripTimeLimit(Rover rover,
                                           int memberNum,
                                           boolean useBuffer)
                                    throws MissionException
Gets the time limit of the trip based on life support capacity.

Parameters:
useBuffer - use time buffer in estimation if true.
Returns:
time (millisols) limit.
Throws:
MissionException - if error determining time limit.

recruitPeopleForMission

protected void recruitPeopleForMission(Person startingPerson)
Description copied from class: Mission
Recruits new people into the mission.

Overrides:
recruitPeopleForMission in class Mission
Parameters:
startingPerson - the person starting the mission.

getMissionQualification

protected double getMissionQualification(Person person)
                                  throws MissionException
Description copied from class: Mission
Gets the mission qualification value for the person. Person is qualified and interested in joining the mission if the value is larger than 0. The larger the qualification value, the more likely the person will be picked for the mission.

Overrides:
getMissionQualification in class Mission
Parameters:
person - the person to check.
Returns:
mission qualification value.
Throws:
MissionException - if error determining mission qualification.

getEquipmentNeededForRemainingMission

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

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

getAssociatedSettlement

public Settlement getAssociatedSettlement()
Description copied from class: Mission
Gets the settlement associated with the mission.

Specified by:
getAssociatedSettlement in class Mission
Returns:
settlement or null if none.

determineNewPhase

protected void determineNewPhase()
                          throws MissionException
Description copied from class: VehicleMission
Determines a new phase for the mission when the current phase has ended.

Overrides:
determineNewPhase in class VehicleMission
Throws:
MissionException - if problem setting a new phase.

performPhase

protected void performPhase(Person person)
                     throws MissionException
Description copied from class: RoverMission
The person performs the current phase of the mission.

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

endResearchAtFieldSite

public void endResearchAtFieldSite()
Ends the research at a field site.


isCapableOfMission

protected boolean isCapableOfMission(Person person)
Description copied from class: Mission
Checks to see if a person is capable of joining a mission.

Overrides:
isCapableOfMission in class Mission
Parameters:
person - the person to check.
Returns:
true if person could join mission.

getEstimatedRemainingMissionTime

public double getEstimatedRemainingMissionTime(boolean useBuffer)
                                        throws MissionException
Description copied from class: VehicleMission
Gets the estimated time remaining for the mission.

Overrides:
getEstimatedRemainingMissionTime in class VehicleMission
Parameters:
useBuffer - Use time buffer in estimations if true.
Returns:
time (millisols)
Throws:
MissionException

getResourcesNeededForRemainingMission

public java.util.Map<Resource,java.lang.Number> getResourcesNeededForRemainingMission(boolean useBuffer,
                                                                                      boolean parts)
                                                                               throws MissionException
Description copied from class: VehicleMission
Gets the number and amounts of resources needed for the mission.

Overrides:
getResourcesNeededForRemainingMission in class VehicleMission
Parameters:
useBuffer - use time buffers in estimation if true.
parts - include parts.
Returns:
map of amount and item resources and their Double amount or Integer number.
Throws:
MissionException - if error determining needed resources.