from nullptr.missions.base import BaseMission, MissionParam from nullptr.models.waypoint import Waypoint from nullptr.models.survey import Survey from nullptr.models.contract import Contract class HaulMission(BaseMission): def start_state(self): return 'travel-to' @classmethod def params(cls): return { 'site': MissionParam(Waypoint, True), 'resource': MissionParam(str, True), 'dest': MissionParam(Waypoint, True), 'delivery': MissionParam(str, True, 'deliver'), 'contract': MissionParam(Contract, False) } def steps(self): return { **self.travel_steps('to', 'site', 'load'), 'load': (self.step_load, 'travel-back'), **self.travel_steps('back', 'dest', 'load'), 'unload': (self.step_unload, 'travel-to'), }