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', 'dock'), 'dock': (self.step_dock, 'market-pre'), 'market-pre': (self.step_market, 'load'), 'load': (self.step_load, 'market-post'), 'market-post': (self.step_market, 'travel-back'), **self.travel_steps('back', 'dest', 'dock-dest'), 'dock-dest': (self.step_dock, 'unload'), 'unload': (self.step_unload, 'market-dest'), 'market-dest': (self.step_market, 'done'), }