public static void SetActiveGoal(IJob job, IPandaNpcGoal npcGoal) { if (!ActiveGoalsByType.TryGetValue(npcGoal.Name, out var goals)) { goals = new List <IPandaNpcGoal>(); ActiveGoalsByType[npcGoal.Name] = goals; } if (!goals.Contains(npcGoal)) { goals.Add(npcGoal); } if (ActiveGoals.TryGetValue(job.Owner, out var goalList)) { if (goalList.TryGetValue(job, out var oldGoal)) { oldGoal.LeavingGoal(); } goalList[job] = npcGoal; } else { goalList = new Dictionary <IJob, IPandaNpcGoal>() { { job, npcGoal } }; ActiveGoals[job.Owner] = goalList; } npcGoal.SetAsGoal(); }
public StandAtJobGoal(IJob job, IPandaNpcGoal nextGoal, Vector3Int pos, StoredItem missingItem = null) { Job = job; Position = pos; NextGoal = nextGoal; MissingItem = missingItem; }
public PutItemsInCrateGoal(IJob job, Vector3Int originalPos, IPandaNpcGoal nextGoal, List <InventoryItem> itemsToStore, IPandaNpcGoal goalStoring) { Job = job; NextGoal = nextGoal; OriginalPos = originalPos; ItemsToStore = itemsToStore.Select(i => new StoredItem(i)).ToArray(); GoalStoring = goalStoring; }
public PutItemsInCrateGoal(IJob job, Vector3Int originalPos, IPandaNpcGoal nextGoal, StoredItem[] itemsToStore, IPandaNpcGoal goalStoring) { Job = job; NextGoal = nextGoal; OriginalPos = originalPos; ItemsToStore = itemsToStore; GoalStoring = goalStoring; }
public GetItemsFromCrateGoal(IJob job, Vector3Int originalPos, IPandaNpcGoal nextGoal, List <InventoryItem> itemsToGet, IPandaNpcGoal itemsForGoal) { Job = job; NextGoal = nextGoal; ItemsToGet = itemsToGet.Select(i => new StoredItem(i)).ToArray(); ItemsForGoal = itemsForGoal; OriginalPosition = originalPos; }
public GetItemsFromCrateGoal(IJob job, Vector3Int originalPos, IPandaNpcGoal nextGoal, StoredItem[] itemsToGet, IPandaNpcGoal itemsForGoal) { Job = job; NextGoal = nextGoal; ItemsToGet = itemsToGet; ItemsForGoal = itemsForGoal; OriginalPosition = originalPos; }
public static bool TryGetActiveGoal(IJob job, out IPandaNpcGoal goal) { if (ActiveGoals.TryGetValue(job.Owner, out var goalList) && goalList.TryGetValue(job, out goal)) { return(true); } goal = default(IPandaNpcGoal); return(false); }
public static void UpdateCrateLocationsForPorter(IPandaNpcGoal goal) { if (goal != null && goal.Job.Owner != null && StorageFactory.CrateLocations.TryGetValue(goal.Job.Owner, out var crateLocations)) { if (goal is CrateToStockpikeGoal cts) { cts.ClosestLocations = goal.GetCrateSearchPosition().SortClosestPositions(crateLocations.Keys); } else if (goal is StockpikeToCrateGoal stc) { stc.ClosestLocations = goal.GetCrateSearchPosition().SortClosestPositions(crateLocations.Keys); } } }
public static void SetActiveGoal(IJob job, IPandaNpcGoal npcGoal, ref NPCBase.NPCState state) { state.JobIsDone = true; SetActiveGoal(job, npcGoal); }
public void SetGoal(IJob job, IPandaNpcGoal npcGoal) { }