Example #1
0
        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 myloc = remoteControl.GetPosition();
                    var connectorAdjustrange = (connector.GetPosition() - remoteControl.GetPosition()).Length();

                    if (connector.Status != MyShipConnectorStatus.Connected)
                    {
                        log.Debug("Dock cp2");
                        var distanceFromCPK1 = (myloc - preDockLocation).Length();

                        if (distanceFromCPK1 <= .5 && CurrentOrder.DockRouteIndex > (int)connectorAdjustrange)
                        {
                            CurrentOrder.DockRouteIndex--;
                        }

                        var distanceFromConnector = (myloc - CurrentOrder.PrimaryLocation).Length();

                        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("dockpos: " + preDockLocation);
                        log.Debug("endpos: " + CurrentOrder.PrimaryLocation);

                        navigationSystems.DockApproach(myloc, preDockLocation);
                        navigationSystems.AlignAgainstGravity();
                        navigationSystems.AlignUp(navigationSystems.RemoteControl.GetPosition() + (CurrentOrder.ThirdLocation * 400));
                    }
                    else
                    {
                        navigationSystems.EnableDockedMode();
                    }
                }
                else
                {
                    log.Error("No Predock Location");
                    navigationSystems.SlowDown();
                }
            }
            catch (Exception e)
            {
                log.Error("In Dock\n" + e.Message + "\n" + e.StackTrace);
            }
        }