Example #1
0
        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);
        }
Example #2
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 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);
            }
        }