Пример #1
0
        private void InitializeGraphicsMouth()
        {
            if (!this._compFace.TexPathJawAddedPart.NullOrEmpty())
            {
                bool flag = ContentFinder <Texture2D> .Get(this._compFace.TexPathJawAddedPart + STR_south, false) != null;

                if (flag)
                {
                    this.JawGraphic =
                        GraphicDatabase.Get <Graphic_Multi_NaturalHeadParts>(this._compFace.TexPathJawAddedPart,
                                                                             ShaderDatabase.CutoutSkin,
                                                                             Vector2.one,
                                                                             Color.white) as Graphic_Multi_NaturalHeadParts;
                    this._compFace.BodyStat.Jaw = PartStatus.Artificial;
                    string addedPart = this._compFace.TexPathJawAddedPart;
                    if (addedPart != null && addedPart.Contains(STR_ROMV_Fangs))
                    {
                        this._compFace.BodyStat.Jaw = PartStatus.DisplayOverBeard;
                    }

                    // all done, return
                    return;
                }

                // texture for added/extra part not found, log and default
                Log.Message(
                    "Facial Stuff: No texture for added part: " + this._compFace.TexPathJawAddedPart
                    + " - Graphic_Multi_NaturalHeadParts. This is not an error, just an info.");
            }

            this.MouthGraphic = this.Mouthgraphic.HumanMouthGraphic[this._pawn.Dead || this._pawn.Downed ? 2 : 3]
                                .Graphic;
        }
Пример #2
0
        public void SetMouthAccordingToMoodLevel()
        {
            if (this._pawn == null)
            {
                return;
            }

            if (!Controller.settings.UseMouth || this._compFace.BodyStat.Jaw != PartStatus.Natural)
            {
                return;
            }

            if (this._pawn.Fleeing() || this._pawn.IsBurning())
            {
                this.MouthGraphic = this.Mouthgraphic.MouthGraphicCrying;
                return;
            }

            if (this._pawn.health.InPainShock && !this._compFace.IsAsleep)
            {
                PawnEyeWiggler eyeWiggler = this._compFace.EyeWiggler;
                if (eyeWiggler == null || eyeWiggler.EyeRightBlinkNow && eyeWiggler.EyeLeftBlinkNow)
                {
                    this.MouthGraphic = this.Mouthgraphic.MouthGraphicCrying;
                    return;
                }
            }

            if (this._pawn.needs?.mood?.thoughts != null)
            {
                this._mood = this._pawn.needs.mood.CurInstantLevel;
            }

            int indexOfMood = this.Mouthgraphic.GetMouthTextureIndexOfMood(this._mood);

            this.MouthGraphic = this.Mouthgraphic.HumanMouthGraphic[indexOfMood].Graphic;
        }
        public HumanMouthGraphics([NotNull] Pawn p)
        {
            Color color = Color.white;
            Graphic_Multi_NaturalHeadParts mouthGraphic01 =
                GraphicDatabase.Get <Graphic_Multi_NaturalHeadParts>(
                    MouthDefOf.Mouth_Mood01.texPath,
                    ShaderDatabase.CutoutSkin,
                    Vector2.one,
                    color) as Graphic_Multi_NaturalHeadParts;

            Graphic_Multi_NaturalHeadParts mouthGraphic02 =
                GraphicDatabase.Get <Graphic_Multi_NaturalHeadParts>(
                    MouthDefOf.Mouth_Mood02.texPath,
                    ShaderDatabase.CutoutSkin,
                    Vector2.one,
                    color) as Graphic_Multi_NaturalHeadParts;

            Graphic_Multi_NaturalHeadParts mouthGraphic03 =
                GraphicDatabase.Get <Graphic_Multi_NaturalHeadParts>(
                    MouthDefOf.Mouth_Mood03.texPath,
                    ShaderDatabase.CutoutSkin,
                    Vector2.one,
                    color) as Graphic_Multi_NaturalHeadParts;

            Graphic_Multi_NaturalHeadParts mouthGraphic04 =
                GraphicDatabase.Get <Graphic_Multi_NaturalHeadParts>(
                    MouthDefOf.Mouth_Mood04.texPath,
                    ShaderDatabase.CutoutSkin,
                    Vector2.one,
                    color) as Graphic_Multi_NaturalHeadParts;

            Graphic_Multi_NaturalHeadParts mouthGraphic05 =
                GraphicDatabase.Get <Graphic_Multi_NaturalHeadParts>(
                    MouthDefOf.Mouth_Mood05.texPath,
                    ShaderDatabase.CutoutSkin,
                    Vector2.one,
                    color) as Graphic_Multi_NaturalHeadParts;

            Graphic_Multi_NaturalHeadParts mouthGraphic06 =
                GraphicDatabase.Get <Graphic_Multi_NaturalHeadParts>(
                    MouthDefOf.Mouth_Mood06.texPath,
                    ShaderDatabase.CutoutSkin,
                    Vector2.one,
                    color) as Graphic_Multi_NaturalHeadParts;

            color = Color.Lerp(Color.white, new Color(0.96f, 0.89f, 0.75f), Rand.Value);

            Graphic_Multi_NaturalHeadParts mouthGraphicGrin =
                GraphicDatabase.Get <Graphic_Multi_NaturalHeadParts>(
                    MouthDefOf.Mouth_Grin.texPath,
                    ShaderDatabase.CutoutSkin,
                    Vector2.one,
                    color) as Graphic_Multi_NaturalHeadParts;

            this.MouthGraphicCrying = GraphicDatabase.Get <Graphic_Multi_NaturalHeadParts>(
                MouthDefOf.Mouth_Crying.texPath,
                ShaderDatabase.CutoutSkin,
                Vector2.one,
                color) as Graphic_Multi_NaturalHeadParts;

            bool flag = Controller.settings.UseNastyGrin;

            if (p.mindState?.mentalBreaker != null)
            {
                float minor   = p.mindState.mentalBreaker.BreakThresholdMinor;
                float major   = p.mindState.mentalBreaker.BreakThresholdMajor;
                float extreme = p.mindState.mentalBreaker.BreakThresholdExtreme;
                float part    = (1f - minor) / (flag ? 5 : 4);

                this.HumanMouthGraphic = new List <MouthGraphicData>
                {
                    new MouthGraphicData(0f, mouthGraphic06),
                    new MouthGraphicData(extreme, mouthGraphic05),
                    new MouthGraphicData(major, mouthGraphic04),
                    new MouthGraphicData(minor, mouthGraphic03),
                    new MouthGraphicData(minor + part, mouthGraphic02),
                    new MouthGraphicData(minor + 2 * part, mouthGraphic01)
                };
                if (flag)
                {
                    this.HumanMouthGraphic.Add(new MouthGraphicData(minor + 4 * part, mouthGraphicGrin));
                }
            }
            else
            {
                this.HumanMouthGraphic = new List <MouthGraphicData>
                {
                    new MouthGraphicData(0f, mouthGraphic06),
                    new MouthGraphicData(0.25f, mouthGraphic05),
                    new MouthGraphicData(0.4f, mouthGraphic04),
                    new MouthGraphicData(0.55f, mouthGraphic03),
                    new MouthGraphicData(0.7f, mouthGraphic02),
                    new MouthGraphicData(flag ? 0.8f : 0.85f, mouthGraphic01)
                };
                if (flag)
                {
                    this.HumanMouthGraphic.Add(new MouthGraphicData(0.95f, mouthGraphicGrin));
                }
            }
        }
 public MouthGraphicData(float mood, Graphic_Multi_NaturalHeadParts graphic)
 {
     this.Mood    = mood;
     this.Graphic = graphic;
 }