public void CratePlacementUpdate(Colony colony, PlacementEventType eventType, Vector3Int position)
 {
     if (eventType == PlacementEventType.Removed)
     {
         foreach (var goalType in ActiveGoalsByType.Values)
         {
             foreach (var goal in goalType)
             {
                 if (goal.ClosestCrate == position)
                 {
                     goal.ClosestCrate = StorageFactory.GetClosestCrateLocation(goal.GetCrateSearchPosition(), colony);
                 }
             }
         }
     }
     else
     {
         foreach (var goalType in ActiveGoalsByType.Values)
         {
             foreach (var goal in goalType)
             {
                 goal.ClosestCrate = StorageFactory.GetClosestCrateLocation(goal.GetCrateSearchPosition(), colony);
             }
         }
     }
 }
Beispiel #2
0
        public void OnTryChangeBlock(ModLoader.OnTryChangeBlockData tryChangeBlockData)
        {
            if (tryChangeBlockData.PlayerClickedData != null && tryChangeBlockData.PlayerClickedData.HitType != Shared.PlayerClickedData.EHitType.Block)
            {
                return;
            }

            var colony = tryChangeBlockData?.RequestOrigin.AsPlayer?.ActiveColony;

            if (colony == null)
            {
                colony = tryChangeBlockData.RequestOrigin.AsColony;
            }

            if (colony != null && StorageFactory.CrateLocations.TryGetValue(colony, out var crateLocs))
            {
                PlacementEventType placementEventType = PlacementEventType.Placed;

                if (StorageFactory.CrateTypes.ContainsKey(tryChangeBlockData.TypeOld.Name))
                {
                    placementEventType = PlacementEventType.Removed;
                }

                if (crateLocs.ContainsKey(tryChangeBlockData.Position))
                {
                    foreach (var s in callbacks)
                    {
                        s.CratePlacementUpdate(colony, placementEventType, tryChangeBlockData.Position);
                    }
                }
            }
        }