public IEnumerable <ThingDef> AllowedStuffs() { tmpStuffCategories.Clear(); bool flag = true; List <SketchThing> things = sketch.Things; for (int i = 0; i < things.Count; i++) { if (!things[i].def.MadeFromStuff || things[i].stuff != null) { continue; } if (flag) { flag = false; tmpStuffCategories.AddRange(things[i].def.stuffCategories); continue; } bool flag2 = false; for (int j = 0; j < things[i].def.stuffCategories.Count; j++) { if (tmpStuffCategories.Contains(things[i].def.stuffCategories[j])) { flag2 = true; break; } } if (!flag2) { continue; } for (int num = tmpStuffCategories.Count - 1; num >= 0; num--) { if (!things[i].def.stuffCategories.Contains(tmpStuffCategories[num])) { tmpStuffCategories.RemoveAt(num); } } } return(GenStuff.AllowedStuffs(tmpStuffCategories)); }
public List <ThingDef> AllowedStuffsFor(SketchBuildable buildable) { if (buildable.Buildable.MadeFromStuff && buildable.Stuff == null) { return(GenStuff.AllowedStuffs(buildable.Buildable.stuffCategories).ToList()); } SketchTerrain sketchTerrain; if ((sketchTerrain = buildable as SketchTerrain) != null) { List <ThingDef> list = new List <ThingDef>(); { foreach (TerrainDef allDef in DefDatabase <TerrainDef> .AllDefs) { if (allDef.BuildableByPlayer && sketchTerrain.IsSameOrSimilar(allDef) && !allDef.costList.NullOrEmpty()) { list.Add(allDef.costList.First().thingDef); } } return(list); } } return(null); }