Ejemplo n.º 1
0
        public override IEnumerable <StatDrawEntry> SpecialDisplayStats(StatRequest req)
        {
            foreach (StatDrawEntry item in base.SpecialDisplayStats(req))
            {
                yield return(item);
            }
            if (!BuildableByPlayer)
            {
                yield break;
            }
            IEnumerable <TerrainAffordanceDef> enumerable = Enumerable.Empty <TerrainAffordanceDef>();

            if (PlaceWorkers != null)
            {
                enumerable = enumerable.Concat(PlaceWorkers.SelectMany((PlaceWorker pw) => pw.DisplayAffordances()));
            }
            TerrainAffordanceDef terrainAffordanceNeed = this.GetTerrainAffordanceNeed(req.StuffDef);

            if (terrainAffordanceNeed != null)
            {
                enumerable = enumerable.Concat(terrainAffordanceNeed);
            }
            string[] array = (from ta in enumerable.Distinct()
                              orderby ta.order
                              select ta.label).ToArray();
            if (array.Length != 0)
            {
                yield return(new StatDrawEntry(StatCategoryDefOf.Basics, "TerrainRequirement".Translate(), array.ToCommaList().CapitalizeFirst(), "Stat_Thing_TerrainRequirement_Desc".Translate(), 1101));
            }
        }
Ejemplo n.º 2
0
        private bool TryGetAffordanceDefToDraw(TerrainDef terrainDef, out TerrainAffordanceDef affordance)
        {
            if (terrainDef == null || terrainDef.affordances.NullOrEmpty())
            {
                affordance = null;
                return(true);
            }
            TerrainAffordanceDef terrainAffordanceDef = null;
            int num = int.MinValue;

            foreach (TerrainAffordanceDef affordance2 in terrainDef.affordances)
            {
                if (affordance2.visualizeOnAffordanceOverlay)
                {
                    if (num < affordance2.order)
                    {
                        num = affordance2.order;
                        terrainAffordanceDef = affordance2;
                    }
                }
                else if (affordance2.blockAffordanceOverlay)
                {
                    affordance = null;
                    return(false);
                }
            }
            affordance = terrainAffordanceDef;
            return(true);
        }
Ejemplo n.º 3
0
        public static TerrainAffordanceDef GetTerrainAffordanceNeed(this BuildableDef def, ThingDef stuffDef = null)
        {
            TerrainAffordanceDef terrainAffordanceNeeded = def.terrainAffordanceNeeded;

            if (stuffDef != null && def.useStuffTerrainAffordance && stuffDef.terrainAffordanceNeeded != null)
            {
                terrainAffordanceNeeded = stuffDef.terrainAffordanceNeeded;
            }
            return(terrainAffordanceNeeded);
        }
Ejemplo n.º 4
0
 public static bool SupportsStructureType(this IntVec3 c, Map map, TerrainAffordanceDef surfaceType)
 {
     return(c.GetTerrain(map).affordances.Contains(surfaceType));
 }