public void ProcessState() { // Nothing to salvage in stations if (Cache.Instance.InStation) return; var cargo = Cache.Instance.DirectEve.GetShipsCargo(); switch (State) { case ScoopState.TargetHostileWrecks: //TargetHostileWrecks(); // Next state State = ScoopState.LootHostileWrecks; break; case ScoopState.LootHostileWrecks: LootHostileWrecks(); //State = ScoopState.SalvageHostileWrecks; break; case ScoopState.SalvageHostileWrecks: ActivateSalvagers(); // Default action State = ScoopState.TargetHostileWrecks; //if (cargo.IsReady && cargo.Items.Any() && _nextAction < DateTime.Now) //{ // Check if there are actually duplicates // var duplicates = cargo.Items.Where(i => i.Quantity > 0).GroupBy(i => i.TypeId).Any(t => t.Count() > 1); // if (duplicates) // State = SalvageState.StackItems; // else // _nextAction = DateTime.Now.AddSeconds(150); //} break; case ScoopState.StackItemsWhileAggressed: Logging.Log("Salvage: Stacking items"); if (cargo.IsReady) cargo.StackAll(); _nextAction = DateTime.Now.AddSeconds(5); State = ScoopState.WaitForStackingWhileAggressed; break; case ScoopState.WaitForStackingWhileAggressed: // Wait 5 seconds after stacking if (_nextAction > DateTime.Now) break; if (Cache.Instance.DirectEve.GetLockedItems().Count == 0) { Logging.Log("Salvage: Done stacking"); State = ScoopState.TargetHostileWrecks; break; } if (DateTime.Now.Subtract(_nextAction).TotalSeconds > 120) { Logging.Log("Salvage: Stacking items timed out, clearing item locks"); Cache.Instance.DirectEve.UnlockItems(); Logging.Log("Salvage: Done stacking"); State = ScoopState.TargetHostileWrecks; break; } break; case ScoopState.Error: // Wait indefinately... break; default: // Unknown state, goto first state State = ScoopState.LootHostileWrecks; break; } }
public void ProcessState() { // Nothing to salvage in stations if (Cache.Instance.InStation) { return; } var cargo = Cache.Instance.DirectEve.GetShipsCargo(); switch (State) { case ScoopState.TargetHostileWrecks: //TargetHostileWrecks(); // Next state State = ScoopState.LootHostileWrecks; break; case ScoopState.LootHostileWrecks: LootHostileWrecks(); //State = ScoopState.SalvageHostileWrecks; break; case ScoopState.SalvageHostileWrecks: ActivateSalvagers(); // Default action State = ScoopState.TargetHostileWrecks; //if (cargo.IsReady && cargo.Items.Any() && _nextAction < DateTime.Now) //{ // Check if there are actually duplicates // var duplicates = cargo.Items.Where(i => i.Quantity > 0).GroupBy(i => i.TypeId).Any(t => t.Count() > 1); // if (duplicates) // State = SalvageState.StackItems; // else // _nextAction = DateTime.Now.AddSeconds(150); //} break; case ScoopState.StackItemsWhileAggressed: Logging.Log("Salvage: Stacking items"); if (cargo.IsReady) { cargo.StackAll(); } _nextAction = DateTime.Now.AddSeconds(5); State = ScoopState.WaitForStackingWhileAggressed; break; case ScoopState.WaitForStackingWhileAggressed: // Wait 5 seconds after stacking if (_nextAction > DateTime.Now) { break; } if (Cache.Instance.DirectEve.GetLockedItems().Count == 0) { Logging.Log("Salvage: Done stacking"); State = ScoopState.TargetHostileWrecks; break; } if (DateTime.Now.Subtract(_nextAction).TotalSeconds > 120) { Logging.Log("Salvage: Stacking items timed out, clearing item locks"); Cache.Instance.DirectEve.UnlockItems(); Logging.Log("Salvage: Done stacking"); State = ScoopState.TargetHostileWrecks; break; } break; case ScoopState.Error: // Wait indefinately... break; default: // Unknown state, goto first state State = ScoopState.LootHostileWrecks; break; } }