// bool cleared = false; public UndockSeperationTask(IAutopilot autopilotSubsystem, IDockingSubsystem dockingSubsystem, MyGridProgram program) { AutopilotSubsystem = autopilotSubsystem; DockingSubsystem = dockingSubsystem; WaitTask = new WaitTask(); Program = program; }
public SetHomeTask(MyTuple <IntelItemType, long> intelKey, long myId, MyGridProgram program, IDockingSubsystem ds) { IntelKey = intelKey; MyId = myId; Program = program; DockingSubsystem = ds; }
public UndockFirstTaskGenerator(MyGridProgram program, IAutopilot autopilot, IDockingSubsystem dockingSubsystem) { Autopilot = autopilot; DockingSubsystem = dockingSubsystem; CompoundTask.Do(new Dictionary <MyTuple <IntelItemType, long>, IFleetIntelligence>(), TimeSpan.Zero, null); CompoundTask.Reset(); UndockSeperationTask = new UndockSeperationTask(Autopilot, DockingSubsystem, program); UndockSeperationTask.Do(new Dictionary <MyTuple <IntelItemType, long>, IFleetIntelligence>(), TimeSpan.Zero, null); DockingSubsystem.Undock(true); }
public HoneybeeMiningTask(MyGridProgram program, HoneybeeMiningSystem miningSystem, IAutopilot autopilot, IAgentSubsystem agentSubsystem, Waypoint target, AsteroidIntel host, IIntelProvider intelProvider, IMonitorSubsystem monitorSubsystem, IDockingSubsystem dockingSubsystem, DockTaskGenerator dockTaskGenerator, UndockFirstTaskGenerator undockTaskGenerator) { Program = program; MiningSystem = miningSystem; Autopilot = autopilot; AgentSubsystem = agentSubsystem; MonitorSubsystem = monitorSubsystem; Host = host; MiningDepth = MiningSystem.MineDepth; LowestExpectedOreDist = (float)MiningDepth; DockingSubsystem = dockingSubsystem; Status = TaskStatus.Incomplete; double lDoc, det; GetSphereLineIntersects(host.Position, host.Radius, target.Position, target.Direction, out lDoc, out det); Perpendicular = GetPerpendicular(target.Direction); CoPerp = Perpendicular.Cross(target.Direction); if (det < 0) { Status = TaskStatus.Aborted; state = -1; return; } SurfaceDist = -lDoc + Math.Sqrt(det); ApproachPoint = target.Position + target.Direction * SurfaceDist * 0.3; ExitPoint = ApproachPoint; EntryPoint = target.Position + target.Direction * miningSystem.CloseDist; MiningEnd = target.Position - target.Direction * MiningDepth; SurfacePoint = target.Position; LeadTask = new WaypointTask(Program, Autopilot, new Waypoint(), WaypointTask.AvoidObstacleMode.SmartEnter); MineTask = new WaypointTask(Program, Autopilot, new Waypoint(), WaypointTask.AvoidObstacleMode.DoNotAvoid); LeadTask.Destination.Position = ApproachPoint; LeadTask.Destination.Direction = target.Direction * -1; LeadTask.Destination.DirectionUp = Perpendicular + CoPerp; intelProvider.ReportFleetIntelligence(LeadTask.Destination, TimeSpan.FromSeconds(1)); MineTask.Destination.Direction = target.Direction * -1; MineTask.Destination.DirectionUp = Perpendicular + CoPerp; MineTask.Destination.Position = EntryPoint; DockTaskGenerator = dockTaskGenerator; UndockTaskGenerator = undockTaskGenerator; }
public HoneybeeMiningTaskGenerator(MyGridProgram program, HoneybeeMiningSystem miningSystem, IAutopilot autopilot, IAgentSubsystem agentSubsystem, IDockingSubsystem dockingSubsystem, DockTaskGenerator dockTaskGenerator, UndockFirstTaskGenerator undockTaskGenerator, IIntelProvider intelProvder, IMonitorSubsystem monitorSubsystem) { Program = program; MiningSystem = miningSystem; Autopilot = autopilot; AgentSubsystem = agentSubsystem; DockTaskGenerator = dockTaskGenerator; UndockTaskGenerator = undockTaskGenerator; IntelProvider = intelProvder; MonitorSubsystem = monitorSubsystem; DockingSubsystem = dockingSubsystem; Task = new HoneybeeMiningTask(Program, MiningSystem, Autopilot, AgentSubsystem, new Waypoint(), new AsteroidIntel(), IntelProvider, MonitorSubsystem, DockingSubsystem, DockTaskGenerator, UndockTaskGenerator); Task.Do(new Dictionary <MyTuple <IntelItemType, long>, IFleetIntelligence>(), TimeSpan.Zero, null); }
public DockTaskGenerator(MyGridProgram program, IAutopilot autopilot, IDockingSubsystem ds) { Program = program; Autopilot = autopilot; DockingSubsystem = ds; holdTask = new WaypointTask(Program, Autopilot, new Waypoint(), WaypointTask.AvoidObstacleMode.Avoid, DockingSubsystem.Connector); approachTask = new WaypointTask(Program, Autopilot, new Waypoint(), WaypointTask.AvoidObstacleMode.SmartEnter, DockingSubsystem.Connector); enterTask = new WaypointTask(Program, Autopilot, new Waypoint(), WaypointTask.AvoidObstacleMode.DoNotAvoid, DockingSubsystem.Connector); closeTask = new WaypointTask(Program, Autopilot, new Waypoint(), WaypointTask.AvoidObstacleMode.DoNotAvoid, DockingSubsystem.Connector); dockTask = new DockTask(DockingSubsystem); Task = new MoveToAndDockTask(); Task.Reset(holdTask, approachTask, enterTask, closeTask, dockTask, MyTuple.Create(IntelItemType.NONE, (long)1234), Program, MyCubeSize.Small, DockingSubsystem.Connector, DockingSubsystem.DirectionIndicator); Task.Do(new Dictionary <MyTuple <IntelItemType, long>, IFleetIntelligence>(), TimeSpan.FromSeconds(1), null); dockTask.Do(new Dictionary <MyTuple <IntelItemType, long>, IFleetIntelligence>(), TimeSpan.Zero, null); holdTask.Do(new Dictionary <MyTuple <IntelItemType, long>, IFleetIntelligence>(), TimeSpan.Zero, null); new WaitTask().Do(new Dictionary <MyTuple <IntelItemType, long>, IFleetIntelligence>(), TimeSpan.Zero, null); }
public DockTask(IDockingSubsystem dockingSubsystem, bool undock = false) { DockingSubsystem = dockingSubsystem; Status = TaskStatus.Incomplete; Undock = undock; }
public SetHomeTaskGenerator(MyGridProgram program, IDockingSubsystem ds) { Program = program; DockingSubsystem = ds; }
public StatusIndicatorSubsystem(IDockingSubsystem dockingSubsystem, IIntelProvider intelProvider) { DockingSubsystem = dockingSubsystem; IntelProvider = intelProvider; }