Beispiel #1
0
        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);
        }