private static void CalculateExpectedListers(Map map)
        {
            Autotests_RegionListers.expectedListers.Clear();
            List <Thing> allThings = map.listerThings.AllThings;

            for (int i = 0; i < allThings.Count; i++)
            {
                Thing thing = allThings[i];
                if (ListerThings.EverListable(thing.def, ListerThingsUse.Region))
                {
                    RegionListersUpdater.GetTouchableRegions(thing, map, Autotests_RegionListers.tmpTouchableRegions, false);
                    for (int j = 0; j < Autotests_RegionListers.tmpTouchableRegions.Count; j++)
                    {
                        Region       key  = Autotests_RegionListers.tmpTouchableRegions[j];
                        List <Thing> list = default(List <Thing>);
                        if (!Autotests_RegionListers.expectedListers.TryGetValue(key, out list))
                        {
                            list = new List <Thing>();
                            Autotests_RegionListers.expectedListers.Add(key, list);
                        }
                        list.Add(allThings[i]);
                    }
                }
            }
        }
        private static void CalculateExpectedListers(Map map)
        {
            expectedListers.Clear();
            List <Thing> allThings = map.listerThings.AllThings;

            for (int i = 0; i < allThings.Count; i++)
            {
                Thing thing = allThings[i];
                if (!ListerThings.EverListable(thing.def, ListerThingsUse.Region))
                {
                    continue;
                }
                RegionListersUpdater.GetTouchableRegions(thing, map, tmpTouchableRegions);
                for (int j = 0; j < tmpTouchableRegions.Count; j++)
                {
                    Region key = tmpTouchableRegions[j];
                    if (!expectedListers.TryGetValue(key, out var value))
                    {
                        value = new List <Thing>();
                        expectedListers.Add(key, value);
                    }
                    value.Add(allThings[i]);
                }
            }
        }
        public static void RegisterInRegions(Thing thing, Map map)
        {
            ThingDef def = thing.def;

            if (ListerThings.EverListable(def, ListerThingsUse.Region))
            {
                RegionListersUpdater.GetTouchableRegions(thing, map, RegionListersUpdater.tmpRegions, false);
                for (int i = 0; i < RegionListersUpdater.tmpRegions.Count; i++)
                {
                    ListerThings listerThings = RegionListersUpdater.tmpRegions[i].ListerThings;
                    if (!listerThings.Contains(thing))
                    {
                        listerThings.Add(thing);
                    }
                }
            }
        }
Пример #4
0
        public static void DeregisterInRegions(Thing thing, Map map)
        {
            ThingDef def = thing.def;

            if (!ListerThings.EverListable(def, ListerThingsUse.Region))
            {
                return;
            }
            RegionListersUpdater.GetTouchableRegions(thing, map, RegionListersUpdater.tmpRegions, true);
            for (int i = 0; i < RegionListersUpdater.tmpRegions.Count; i++)
            {
                ListerThings listerThings = RegionListersUpdater.tmpRegions[i].ListerThings;
                if (listerThings.Contains(thing))
                {
                    listerThings.Remove(thing);
                }
            }
            RegionListersUpdater.tmpRegions.Clear();
        }