public void Notify_BuildingDeSpawned(Building b)
 {
     if (MeditationUtility.CountsAsArtificialBuilding(b))
     {
         artificialBuildingsPerCell.Clear();
     }
 }
コード例 #2
0
        public List <Thing> GetForCell(IntVec3 cell, float radius)
        {
            CellWithRadius key = new CellWithRadius(cell, radius);

            if (!artificialBuildingsPerCell.TryGetValue(key, out List <Thing> value))
            {
                value = new List <Thing>();
                foreach (Thing item in GenRadial.RadialDistinctThingsAround(cell, map, radius, useCenter: false))
                {
                    if (MeditationUtility.CountsAsArtificialBuilding(item))
                    {
                        value.Add(item);
                    }
                }
                artificialBuildingsPerCell[key] = value;
            }
            return(value);
        }
コード例 #3
0
        public bool WillBeAffectedBy(ThingDef def, Faction faction, IntVec3 pos, Rot4 rotation)
        {
            CellRect cellRect = GenAdj.OccupiedRect(pos, rotation, def.size);

            foreach (FocusStrengthOffset offset in Props.offsets)
            {
                FocusStrengthOffset_ArtificialBuildings focusStrengthOffset_ArtificialBuildings;
                if ((focusStrengthOffset_ArtificialBuildings = (offset as FocusStrengthOffset_ArtificialBuildings)) != null && MeditationUtility.CountsAsArtificialBuilding(def, faction) && cellRect.ClosestCellTo(parent.Position).DistanceTo(parent.Position) <= focusStrengthOffset_ArtificialBuildings.radius)
                {
                    return(true);
                }
            }
            return(false);
        }