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 void Add(Thing t) { if (ListerThings.EverListable(t.def, this.use)) { List <Thing> list = default(List <Thing>); if (!this.listsByDef.TryGetValue(t.def, out list)) { list = new List <Thing>(); this.listsByDef.Add(t.def, list); } list.Add(t); ThingRequestGroup[] allGroups = ThingListGroupHelper.AllGroups; foreach (ThingRequestGroup thingRequestGroup in allGroups) { if ((this.use != ListerThingsUse.Region || thingRequestGroup.StoreInRegion()) && thingRequestGroup.Includes(t.def)) { List <Thing> list2 = this.listsByGroup[(uint)thingRequestGroup]; if (list2 == null) { list2 = new List <Thing>(); this.listsByGroup[(uint)thingRequestGroup] = list2; } list2.Add(t); } } } }
public void Add(Thing t) { if (!ListerThings.EverListable(t.def, this.use)) { return; } List <Thing> list; if (!this.listsByDef.TryGetValue(t.def, out list)) { list = new List <Thing>(); this.listsByDef.Add(t.def, list); } list.Add(t); ThingRequestGroup[] allGroups = ThingListGroupHelper.AllGroups; for (int i = 0; i < allGroups.Length; i++) { ThingRequestGroup thingRequestGroup = allGroups[i]; if (this.use != ListerThingsUse.Region || thingRequestGroup.StoreInRegion()) { if (thingRequestGroup.Includes(t.def)) { List <Thing> list2 = this.listsByGroup[(int)thingRequestGroup]; if (list2 == null) { list2 = new List <Thing>(); this.listsByGroup[(int)thingRequestGroup] = list2; } list2.Add(t); } } } }
public static void BestThingRequestGroup() { DebugTables.MakeTablesDialog(from x in DefDatabase <ThingDef> .AllDefs where ListerThings.EverListable(x, ListerThingsUse.Global) || ListerThings.EverListable(x, ListerThingsUse.Region) orderby x.label select x, new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("best local", delegate(ThingDef d) { IEnumerable <ThingRequestGroup> source2 = ListerThings.EverListable(d, ListerThingsUse.Region) ? ((ThingRequestGroup[])Enum.GetValues(typeof(ThingRequestGroup))).Where((ThingRequestGroup x) => x.StoreInRegion() && x.Includes(d)) : Enumerable.Empty <ThingRequestGroup>(); if (!source2.Any()) { return("-"); } ThingRequestGroup best2 = source2.MinBy((ThingRequestGroup x) => DefDatabase <ThingDef> .AllDefs.Count((ThingDef y) => ListerThings.EverListable(y, ListerThingsUse.Region) && x.Includes(y))); return(best2 + " (defs: " + DefDatabase <ThingDef> .AllDefs.Count((ThingDef x) => ListerThings.EverListable(x, ListerThingsUse.Region) && best2.Includes(x)) + ")"); }), new TableDataGetter <ThingDef>("best global", delegate(ThingDef d) { IEnumerable <ThingRequestGroup> source = ListerThings.EverListable(d, ListerThingsUse.Global) ? ((ThingRequestGroup[])Enum.GetValues(typeof(ThingRequestGroup))).Where((ThingRequestGroup x) => x.Includes(d)) : Enumerable.Empty <ThingRequestGroup>(); if (!source.Any()) { return("-"); } ThingRequestGroup best = source.MinBy((ThingRequestGroup x) => DefDatabase <ThingDef> .AllDefs.Count((ThingDef y) => ListerThings.EverListable(y, ListerThingsUse.Global) && x.Includes(y))); return(best + " (defs: " + DefDatabase <ThingDef> .AllDefs.Count((ThingDef x) => ListerThings.EverListable(x, ListerThingsUse.Global) && best.Includes(x)) + ")"); })); }
public void Remove(Thing t) { if (ListerThings.EverListable(t.def, this.use)) { this.listsByDef[t.def].Remove(t); ThingRequestGroup[] allGroups = ThingListGroupHelper.AllGroups; for (int i = 0; i < allGroups.Length; i++) { ThingRequestGroup group = allGroups[i]; if ((this.use != ListerThingsUse.Region || group.StoreInRegion()) && group.Includes(t.def)) { this.listsByGroup[i].Remove(t); } } } }
public static void DeregisterInRegions(Thing thing, Map map) { if (!ListerThings.EverListable(thing.def, ListerThingsUse.Region)) { return; } GetTouchableRegions(thing, map, tmpRegions, allowAdjacentEvenIfCantTouch: true); for (int i = 0; i < tmpRegions.Count; i++) { ListerThings listerThings = tmpRegions[i].ListerThings; if (listerThings.Contains(thing)) { listerThings.Remove(thing); } } tmpRegions.Clear(); }
public static void RegisterInRegions(Thing thing, Map map) { if (!ListerThings.EverListable(thing.def, ListerThingsUse.Region)) { return; } GetTouchableRegions(thing, map, tmpRegions); for (int i = 0; i < tmpRegions.Count; i++) { ListerThings listerThings = tmpRegions[i].ListerThings; if (!listerThings.Contains(thing)) { listerThings.Add(thing); } } tmpRegions.Clear(); }
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); } } } }
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(); }