public static bool TryGetGraphicApparel(Apparel apparel, BodyTypeDef bodyType, out ApparelGraphicRecord rec)
        {
            if (bodyType == null)
            {
                Log.Error("Getting apparel graphic with undefined body type.", false);
                bodyType = BodyTypeDefOf.Male;
            }
            if (apparel.def.apparel.wornGraphicPath.NullOrEmpty())
            {
                rec = new ApparelGraphicRecord(null, null);
                return(false);
            }
            string path;

            if (apparel.def.apparel.LastLayer == ApparelLayerDefOf.Overhead)
            {
                path = apparel.def.apparel.wornGraphicPath;
            }
            else
            {
                path = apparel.def.apparel.wornGraphicPath + "_" + bodyType.defName;
            }
            Graphic graphic = GraphicDatabase.Get <Graphic_Multi>(path, ShaderDatabase.Cutout, apparel.def.graphicData.drawSize, apparel.DrawColor);

            rec = new ApparelGraphicRecord(graphic, apparel);
            return(true);
        }
示例#2
0
        public Vector2 BeltScaleAt(BodyTypeDef bodyType)
        {
            Vector2 result = Vector2.one;

            if (bodyType == BodyTypeDefOf.Male)
            {
                result = male.Scale;
            }
            else if (bodyType == BodyTypeDefOf.Female)
            {
                result = female.Scale;
            }
            else if (bodyType == BodyTypeDefOf.Thin)
            {
                result = thin.Scale;
            }
            else if (bodyType == BodyTypeDefOf.Hulk)
            {
                result = hulk.Scale;
            }
            else if (bodyType == BodyTypeDefOf.Fat)
            {
                result = fat.Scale;
            }
            return(result);
        }
示例#3
0
        public Vector2 BeltOffsetAt(Rot4 facing, BodyTypeDef bodyType)
        {
            WornGraphicDirectionData wornGraphicDirectionData = default(WornGraphicDirectionData);

            switch (facing.AsInt)
            {
            case 0:
                wornGraphicDirectionData = north;
                break;

            case 1:
                wornGraphicDirectionData = east;
                break;

            case 2:
                wornGraphicDirectionData = south;
                break;

            case 3:
                wornGraphicDirectionData = west;
                break;
            }
            Vector2 offset = wornGraphicDirectionData.offset;

            if (bodyType == BodyTypeDefOf.Male)
            {
                offset += wornGraphicDirectionData.male.offset;
            }
            else if (bodyType == BodyTypeDefOf.Female)
            {
                offset += wornGraphicDirectionData.female.offset;
            }
            else if (bodyType == BodyTypeDefOf.Thin)
            {
                offset += wornGraphicDirectionData.thin.offset;
            }
            else if (bodyType == BodyTypeDefOf.Hulk)
            {
                offset += wornGraphicDirectionData.hulk.offset;
            }
            else if (bodyType == BodyTypeDefOf.Fat)
            {
                offset += wornGraphicDirectionData.fat.offset;
            }
            return(offset);
        }
示例#4
0
        public void ResolveReferences()
        {
            int    num = Mathf.Abs(GenText.StableStringHash(baseDesc) % 100);
            string s   = title.Replace('-', ' ');

            s          = GenText.CapitalizedNoSpaces(s);
            identifier = GenText.RemoveNonAlphanumeric(s) + num.ToString();
            foreach (KeyValuePair <string, int> skillGain in skillGains)
            {
                skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed(skillGain.Key), skillGain.Value);
            }
            skillGains = null;
            if (!bodyTypeGlobal.NullOrEmpty())
            {
                bodyTypeGlobalResolved = DefDatabase <BodyTypeDef> .GetNamed(bodyTypeGlobal);
            }
            if (!bodyTypeFemale.NullOrEmpty())
            {
                bodyTypeFemaleResolved = DefDatabase <BodyTypeDef> .GetNamed(bodyTypeFemale);
            }
            if (!bodyTypeMale.NullOrEmpty())
            {
                bodyTypeMaleResolved = DefDatabase <BodyTypeDef> .GetNamed(bodyTypeMale);
            }
            if (!nameMaker.NullOrEmpty())
            {
                nameMakerResolved = DefDatabase <RulePackDef> .GetNamed(nameMaker);
            }
            if (slot == BackstorySlot.Adulthood && bodyTypeGlobalResolved == null)
            {
                if (bodyTypeMaleResolved == null)
                {
                    Log.Error("Adulthood backstory " + title + " is missing male body type. Defaulting...");
                    bodyTypeMaleResolved = BodyTypeDefOf.Male;
                }
                if (bodyTypeFemaleResolved == null)
                {
                    Log.Error("Adulthood backstory " + title + " is missing female body type. Defaulting...");
                    bodyTypeFemaleResolved = BodyTypeDefOf.Female;
                }
            }
        }
示例#5
0
        public void ResolveReferences()
        {
            int    num = Mathf.Abs(GenText.StableStringHash(this.baseDesc) % 100);
            string s   = this.title.Replace('-', ' ');

            s = GenText.CapitalizedNoSpaces(s);
            this.identifier = GenText.RemoveNonAlphanumeric(s) + num.ToString();
            foreach (KeyValuePair <string, int> keyValuePair in this.skillGains)
            {
                this.skillGainsResolved.Add(DefDatabase <SkillDef> .GetNamed(keyValuePair.Key, true), keyValuePair.Value);
            }
            this.skillGains = null;
            if (!this.bodyTypeGlobal.NullOrEmpty())
            {
                this.bodyTypeGlobalResolved = DefDatabase <BodyTypeDef> .GetNamed(this.bodyTypeGlobal, true);
            }
            if (!this.bodyTypeFemale.NullOrEmpty())
            {
                this.bodyTypeFemaleResolved = DefDatabase <BodyTypeDef> .GetNamed(this.bodyTypeFemale, true);
            }
            if (!this.bodyTypeMale.NullOrEmpty())
            {
                this.bodyTypeMaleResolved = DefDatabase <BodyTypeDef> .GetNamed(this.bodyTypeMale, true);
            }
            if (this.slot == BackstorySlot.Adulthood)
            {
                if (this.bodyTypeGlobalResolved == null)
                {
                    if (this.bodyTypeMaleResolved == null)
                    {
                        Log.Error("Adulthood backstory " + this.title + " is missing male body type. Defaulting...", false);
                        this.bodyTypeMaleResolved = BodyTypeDefOf.Male;
                    }
                    if (this.bodyTypeFemaleResolved == null)
                    {
                        Log.Error("Adulthood backstory " + this.title + " is missing female body type. Defaulting...", false);
                        this.bodyTypeFemaleResolved = BodyTypeDefOf.Female;
                    }
                }
            }
        }
示例#6
0
        public static bool TryGetGraphicApparel(Apparel apparel, BodyTypeDef bodyType, out ApparelGraphicRecord rec)
        {
            if (bodyType == null)
            {
                Log.Error("Getting apparel graphic with undefined body type.");
                bodyType = BodyTypeDefOf.Male;
            }
            if (apparel.def.apparel.wornGraphicPath.NullOrEmpty())
            {
                rec = new ApparelGraphicRecord(null, null);
                return(false);
            }
            string path   = (apparel.def.apparel.LastLayer != ApparelLayerDefOf.Overhead && !(apparel.def.apparel.wornGraphicPath == BaseContent.PlaceholderImagePath)) ? (apparel.def.apparel.wornGraphicPath + "_" + bodyType.defName) : apparel.def.apparel.wornGraphicPath;
            Shader shader = ShaderDatabase.Cutout;

            if (apparel.def.apparel.useWornGraphicMask)
            {
                shader = ShaderDatabase.CutoutComplex;
            }
            Graphic graphic = GraphicDatabase.Get <Graphic_Multi>(path, shader, apparel.def.graphicData.drawSize, apparel.DrawColor);

            rec = new ApparelGraphicRecord(graphic, apparel);
            return(true);
        }