Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 public StandAtJobGoal(IJob job, IPandaNpcGoal nextGoal, Vector3Int pos, StoredItem missingItem = null)
 {
     Job         = job;
     Position    = pos;
     NextGoal    = nextGoal;
     MissingItem = missingItem;
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
 public PutItemsInCrateGoal(IJob job, Vector3Int originalPos, IPandaNpcGoal nextGoal, StoredItem[] itemsToStore, IPandaNpcGoal goalStoring)
 {
     Job          = job;
     NextGoal     = nextGoal;
     OriginalPos  = originalPos;
     ItemsToStore = itemsToStore;
     GoalStoring  = goalStoring;
 }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
 public GetItemsFromCrateGoal(IJob job, Vector3Int originalPos, IPandaNpcGoal nextGoal, StoredItem[] itemsToGet, IPandaNpcGoal itemsForGoal)
 {
     Job              = job;
     NextGoal         = nextGoal;
     ItemsToGet       = itemsToGet;
     ItemsForGoal     = itemsForGoal;
     OriginalPosition = originalPos;
 }
Exemplo n.º 7
0
        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);
         }
     }
 }
Exemplo n.º 9
0
 public static void SetActiveGoal(IJob job, IPandaNpcGoal npcGoal, ref NPCBase.NPCState state)
 {
     state.JobIsDone = true;
     SetActiveGoal(job, npcGoal);
 }
Exemplo n.º 10
0
 public void SetGoal(IJob job, IPandaNpcGoal npcGoal)
 {
 }