private void MinePosition() { var navPoint = CurrentOrder.dockroute[CurrentOrder.MiningIndex]; navigationSystems.AlignAgainstGravity(); //navigationSystems.AlignTo(navPoint); foreach (var drill in shipComponents.MiningDrills) { drill.GetActionWithName("OnOff_On").Apply(drill); } var distance = (navigationSystems.RemoteControl.GetPosition() - navPoint).Length(); if (distance > 50) { var difference = 50 - trackingSystems.GetAltitude(); if (difference > 10) { navigationSystems.MaintainAltitude(trackingSystems.GetAltitude(), 50, 10); } navigationSystems.Approach(navPoint, 10); } else { navigationSystems.Approach(navPoint, 1); } if (distance <= 1 && CurrentOrder.MiningIndex == 0) { MiningEngaged = true; } if (distance < 10) { navigationSystems.Roll(2); if (navigationSystems.GetSpeed() > .15) { navigationSystems.SlowDown(); } } else { navigationSystems.AlignUp(navPoint); } if (distance < .5 && CurrentOrder.MiningIndex + 1 < CurrentOrder.dockroute.Count()) { CurrentOrder.MiningIndex++; } log.Debug(CurrentOrder.dockroute.Count() + " :distance: " + distance + " index: " + CurrentOrder.MiningIndex); }
private void DockToConnector() { try { //log.Debug("Processing Dock Order"); //log.Debug(CurrentOrder.dockroute.Count()+" Number of dock Orders"); var preDockLocation = CurrentOrder.dockroute[CurrentOrder.DockRouteIndex]; if (preDockLocation != null) { var remoteControl = shipComponents.ControlUnits.FirstOrDefault(); var connector = shipComponents.Connectors.First(); var connectorAdjustrange = (connector.GetPosition() - remoteControl.GetPosition()); var myloc = remoteControl.GetPosition() + connectorAdjustrange; if (connector.Status != MyShipConnectorStatus.Connected) { var distanceFromConnector = (myloc - CurrentOrder.PrimaryLocation).Length(); var distanceFromCPK1 = (myloc - preDockLocation).Length(); log.Debug("Dock cp2 " + distanceFromCPK1); if (distanceFromCPK1 <= 1 && CurrentOrder.DockRouteIndex >= 1) { CurrentOrder.DockRouteIndex--; } if (distanceFromConnector < 10) { log.Debug("Dock cp3: " + distanceFromConnector + " " + connector.Status); connector.GetActionWithName("OnOff_On").Apply(connector); log.Debug("Connecter Status: " + connector.Status); connector.Connect(); } //log.Debug("from dock " + distanceFromConnector + " from point: " + distanceFromCPK1 + " index: " + CurrentOrder.dockroute.Count); navigationSystems.DockApproach(myloc, preDockLocation); if (distanceFromConnector > 180) { navigationSystems.AlignTo(preDockLocation); } else { navigationSystems.AlignTo(Me.CubeGrid.GetPosition() + (CurrentOrder.DirectionalVectorOne * 200)); } navigationSystems.Roll(.12f); //navigationSystems.AlignUp(navigationSystems.RemoteControl.GetPosition() + (CurrentOrder.ThirdLocation * 400)); } else { navigationSystems.EnableDockedMode(); } } else { log.Error("No Predock Route"); navigationSystems.SlowDown(); } } catch (Exception e) { log.Error("In Dock\n" + e.Message + "\n" + e.StackTrace); } }