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; }
private void MoveToDropoff() { var methodName = "MoveToDropoff"; LogTrace(methodName); var result = _moveToDropOffLocationPartialBehavior.Execute(); if (result == BehaviorExecutionResults.Incomplete) { return; } if (result == BehaviorExecutionResults.Error) { _freighterState = FreighterStates.Error; } }
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; } }
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; } }
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; } }