Beispiel #1
0
        private void Dropoff()
        {
            var methodName = "TrackDropoff";

            LogTrace(methodName);

            if (!_ship.IsInventoryReady)
            {
                return;
            }

            var result = _dropOffCargoPartialBehavior.Execute();

            if (result == BehaviorExecutionResults.Incomplete)
            {
                return;
            }

            if (result == BehaviorExecutionResults.Error)
            {
                _freighterState = FreighterStates.Error;
            }

            //RecordDropoff();

            _freighterState = FreighterStates.Idle;
        }
Beispiel #2
0
        private void MoveToDropoff()
        {
            var methodName = "MoveToDropoff";

            LogTrace(methodName);

            var result = _moveToDropOffLocationPartialBehavior.Execute();

            if (result == BehaviorExecutionResults.Incomplete)
            {
                return;
            }

            if (result == BehaviorExecutionResults.Error)
            {
                _freighterState = FreighterStates.Error;
            }
        }
Beispiel #3
0
        protected override void SetPulseState()
        {
            var methodName = "SetPulseState";

            LogTrace(methodName);

            //If we're fleeing, set state to DefenceHasControl.
            if (Core.StealthBot.Defense.IsFleeing)
            {
                _freighterState = FreighterStates.DefenseHasControl;
            }

            switch (_freighterState)
            {
            case FreighterStates.Idle:
                //If I'm idle, do something.
                if (_freighterState == FreighterStates.Idle)
                {
                    //go to pickup if I'm not there
                    //Will have to be handled differently for the different dropoff types. The one constant is
                    //that I need to be in the right system regardless.

                    //If I'm not in the right system, the bookmark is a station I'm not in, or I'm in space and not at the bookmark, move to it.
                    if (!IsAtPickup())
                    {
                        LogMessage(methodName, LogSeverityTypes.Debug, "Idle and not at pickup; going to pickup.");
                        _freighterState = FreighterStates.MoveToPickup;
                    }
                    else
                    {
                        LogMessage(methodName, LogSeverityTypes.Debug, "Idle and at pickup; doing pickup.");
                        _freighterState = FreighterStates.Pickup;
                    }
                }
                break;

            case FreighterStates.MoveToPickup:
                //If I should be going to pickup and I'm there, change state.
                if (IsAtPickup())
                {
                    LogMessage(methodName, LogSeverityTypes.Debug, "MoveToPickup state and at pickup; going to Pickup state.");
                    _freighterState = FreighterStates.Pickup;
                }
                break;

            case FreighterStates.MoveToDropoff:
                //If I should be going to dropoff and I'm there, change state.
                if (IsAtDropoff())
                {
                    LogMessage(methodName, LogSeverityTypes.Debug, "MoveToDropoff state and at dropoff; going to TrackDropoff state.");
                    _freighterState = FreighterStates.Dropoff;
                }
                break;

            case FreighterStates.DefenseHasControl:
                //If defence has control and nolonger fleeing, reset to idle.
                if (!Core.StealthBot.Defense.IsFleeing)
                {
                    LogMessage(methodName, LogSeverityTypes.Debug, "DefenseHasControl state and no longer fleeing; going to Idle state.");
                    _freighterState = FreighterStates.Idle;
                    goto case FreighterStates.Idle;
                }
                break;

            default:
                break;
            }
        }
Beispiel #4
0
        private void PickupFromCorporateHangarArray()
        {
            var methodName = "PickupFromCorporateHangarArray";

            LogTrace(methodName);

            if (!IsAtPickup())
            {
                _freighterState = FreighterStates.MoveToPickup;
                _corporateHangarArrayPickupState = CorporateHangarArrayDropOffStates.Idle;

                LogMessage(methodName, LogSeverityTypes.Standard, "No longer at pickup location, moving back to it.");
            }

            LogMessage(methodName, LogSeverityTypes.Debug, "Processing state: {0}", _corporateHangarArrayPickupState);

            var corporateHangarArrayEntity = Core.StealthBot.EntityProvider.EntityWrappers.FirstOrDefault(
                entity => entity.ID == Core.StealthBot.Config.CargoConfig.PickupLocation.EntityID);

            if (corporateHangarArrayEntity == null)
            {
                LogMessage(methodName, LogSeverityTypes.Debug, "Error: Could not find entity with ID {0} for corporate hangar array pickup.",
                           Core.StealthBot.Config.CargoConfig.PickupLocation.EntityID);
                _freighterState = FreighterStates.Error;
                return;
            }

            var pickupCorporateHangarArray = new CorporateHangarArray(corporateHangarArrayEntity, _eveWindowProvider);

            switch (_corporateHangarArrayPickupState)
            {
            case CorporateHangarArrayDropOffStates.Idle:
                _corporateHangarArrayPickupState = CorporateHangarArrayDropOffStates.OpenCan;
                goto case CorporateHangarArrayDropOffStates.OpenCan;

            case CorporateHangarArrayDropOffStates.OpenCan:
                if (!pickupCorporateHangarArray.IsCurrentContainerWindowOpen)
                {
                    LogMessage(methodName, LogSeverityTypes.Standard, "Opening cargo of CHA {0} ({1}).",
                               pickupCorporateHangarArray.CurrentContainer.Name, pickupCorporateHangarArray.CurrentContainer.ID);
                    pickupCorporateHangarArray.CurrentContainer.Open();
                    return;
                }

                LogMessage(methodName, LogSeverityTypes.Standard, "Expanding the array's corporate hangars tab.");
                pickupCorporateHangarArray.InitializeCorporateHangars();

                _corporateHangarArrayPickupState = CorporateHangarArrayDropOffStates.MakeChaChildWindowActive;
                break;

            case CorporateHangarArrayDropOffStates.MakeChaChildWindowActive:
                if (!pickupCorporateHangarArray.IsCurrentContainerWindowActive)
                {
                    LogMessage(methodName, LogSeverityTypes.Standard, "Making CHA {0} cargo window active.",
                               pickupCorporateHangarArray.CurrentContainer.Name);
                    pickupCorporateHangarArray.MakeCurrentContainerWindowActive();
                    return;
                }

                _corporateHangarArrayPickupState = CorporateHangarArrayDropOffStates.UnloadCargoHold;
                break;

            case CorporateHangarArrayDropOffStates.UnloadCargoHold:
                LogMessage(methodName, LogSeverityTypes.Standard, "Transferring cargo from the pickup corp hangar array to ship cargo.");

                _ship.TransferCorporateHangarArrayToShipHangar(pickupCorporateHangarArray);

                _corporateHangarArrayPickupState = CorporateHangarArrayDropOffStates.StackCargo;
                break;

            case CorporateHangarArrayDropOffStates.StackCargo:
                //Stack my cargo and the CHA's.
                if (!_ship.IsCargoHoldActive)
                {
                    LogMessage(methodName, LogSeverityTypes.Standard, "Making my ship's cargo window active to stack cargo.");
                    _ship.MakeCargoHoldActive();
                    return;
                }

                _ship.StackInventory();

                _corporateHangarArrayPickupState = CorporateHangarArrayDropOffStates.Idle;
                _freighterState = FreighterStates.MoveToDropoff;
                break;
            }
        }
Beispiel #5
0
        private void Pickup()
        {
            var methodName = "Pickup";

            LogTrace(methodName);

            if (!_ship.IsInventoryReady)
            {
                return;
            }

            switch (Core.StealthBot.Config.CargoConfig.PickupLocation.LocationType)
            {
            case LocationTypes.Station:
                if (!Core.StealthBot.Station.IsStationHangarActive)
                {
                    LogMessage(methodName, LogSeverityTypes.Standard, "Making station hangar active.");
                    Core.StealthBot.Station.MakeStationHangarActive();
                    return;
                }

                //Move what I can from station hangar to my hangar
                var hangarItems = _meCache.Me.GetHangarItems();
                if (hangarItems.Count > 0)
                {
                    _ship.TransferStationHangarToShipHangar();
                    _freighterState = FreighterStates.MoveToDropoff;
                }
                else
                {
                    LogMessage(methodName, LogSeverityTypes.Standard, "No items to pick up.");
                    Core.StealthBot.Alerts.NothingForFreighterToPickup();
                }
                break;

            case LocationTypes.StationCorpHangar:
                //If the station corp hangar isn't open; open it.
                if (!Core.StealthBot.Station.IsStationCorpHangarActive)
                {
                    LogMessage(methodName, LogSeverityTypes.Standard, "Making station corporate hangar active.");
                    Core.StealthBot.Station.MakeStationCorpHangarActive();
                    return;
                }

                //Move what I can from corporate hangar to station hangar
                var corpHangarItems = _meCache.Me.GetCorpHangarItems(Core.StealthBot.Config.CargoConfig.PickupLocation.HangarDivision);
                if (corpHangarItems.Count > 0)
                {
                    _ship.TransferStationCorpHangarToShipHangar();
                    _freighterState = FreighterStates.MoveToDropoff;
                }
                else
                {
                    LogMessage(methodName, LogSeverityTypes.Standard, "No items to pick up.");
                    Core.StealthBot.Alerts.NothingForFreighterToPickup();
                }
                break;

            case LocationTypes.CorpHangarArray:
                PickupFromCorporateHangarArray();
                break;
            }
        }