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; }
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; }