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

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
                  extended by org.mars_sim.msp.simulation.person.ai.mission.Exploration
All Implemented Interfaces:
java.io.Serializable, UnitListener

public class Exploration
extends RoverMission

The Exploration class is a mission to travel in a rover to several random locations around a settlement and collect rock samples.

See Also:
Serialized Form

Field Summary
static java.lang.String DEFAULT_DESCRIPTION
           
static java.lang.String EXPLORE_SITE
           
static double EXPLORING_SITE_TIME
           
static int REQUIRED_SPECIMEN_CONTAINERS
           
 
Fields inherited from class org.mars_sim.msp.simulation.person.ai.mission.RoverMission
MIN_PEOPLE, 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
Exploration(java.util.Collection<Person> members, Settlement startingSettlement, java.util.List<Coordinates> explorationSites, Rover rover, java.lang.String description)
          Constructor with explicit data.
Exploration(Person startingPerson)
          Constructor
 
Method Summary
protected  int compareVehicles(Vehicle firstVehicle, Vehicle secondVehicle)
          Compares the quality of two vehicles for use in this mission.
protected  void determineNewPhase()
          Determines a new phase for the mission when the current phase has ended.
 void endExplorationAtSite()
          Ends the exploration at a 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 getEstimatedTimeAtExplorationSites()
          Gets the estimated time spent at all exploration sites.
 java.util.List<ExploredLocation> getExploredSites()
          Gets a list of sites explored by the mission so far.
static double getNewMissionProbability(Person person)
          Gets the weighted probability that a given person would start this mission.
 int getNumExplorationSites()
          Gets the total number of exploration sites for this mission.
 int getNumExplorationSitesVisited()
          Gets the number of exploration sites that have been currently visited by the 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.simulation.person.ai.mission.RoverMission
areVehiclesAvailable, atLeastOnePersonRemainingAtSettlement, endMission, getOperateVehicleTask, getResourcesNeededForTrip, getRover, getStartingSettlement, getVehicleWithGreatestRange, hasDangerousMedicalProblemAtAssociatedSettlement, hasEmergency, isEveryoneInRover, isNoOneInRover, isRoverInAGarage, isUsableVehicle, minAvailablePeopleAtSettlement, performDisembarkToSettlementPhase, performEmbarkFromSettlementPhase, setStartingSettlement
 
Methods inherited from class org.mars_sim.msp.simulation.person.ai.mission.VehicleMission
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.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, getCurrentMissionLocation, getDescription, getMinPeople, getMissionCapacity, getMissionQualification, 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

EXPLORE_SITE

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

REQUIRED_SPECIMEN_CONTAINERS

public static final int REQUIRED_SPECIMEN_CONTAINERS
See Also:
Constant Field Values

EXPLORING_SITE_TIME

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

Exploration

public Exploration(Person startingPerson)
            throws MissionException
Constructor

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

Exploration

public Exploration(java.util.Collection<Person> members,
                   Settlement startingSettlement,
                   java.util.List<Coordinates> explorationSites,
                   Rover rover,
                   java.lang.String description)
            throws MissionException
Constructor with explicit data.

Parameters:
members - collection of mission members.
startingSettlement - the starting settlement.
explorationSites - the sites to explore.
rover - the rover to use.
description - the mission's description.
Throws:
MissionException - if error constructing 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

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.

endExplorationAtSite

public void endExplorationAtSite()
Ends the exploration at a 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.

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.

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.

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.

compareVehicles

protected int compareVehicles(Vehicle firstVehicle,
                              Vehicle secondVehicle)
                       throws MissionException
Description copied from class: VehicleMission
Compares the quality of two vehicles for use in this mission. (This method should be added to by children)

Overrides:
compareVehicles in class VehicleMission
Parameters:
firstVehicle - the first vehicle to compare
secondVehicle - the second vehicle to compare
Returns:
-1 if the second vehicle is better than the first vehicle, 0 if vehicle are equal in quality, and 1 if the first vehicle is better than the second vehicle.
Throws:
MissionException - if error determining vehicle range.

getEstimatedTimeAtExplorationSites

protected double getEstimatedTimeAtExplorationSites()
Gets the estimated time spent at all exploration sites.

Returns:
time (millisols)

getNumExplorationSites

public final int getNumExplorationSites()
Gets the total number of exploration sites for this mission.

Returns:
number of sites.

getNumExplorationSitesVisited

public final int getNumExplorationSitesVisited()
Gets the number of exploration sites that have been currently visited by the mission.

Returns:
number of sites.

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.

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.

getExploredSites

public java.util.List<ExploredLocation> getExploredSites()
Gets a list of sites explored by the mission so far.

Returns:
list of explored sites.