//draws the harddrive's info tabs private void FillInfoTabs(Rect cardRect) { if (this.tab == Neurolink_Dialog_Mainframe.InfoCardTab.Character) { CharacterCardUtility.DrawCharacterCard(cardRect, this.selectedHarddrive.pawn, null, default(Rect)); } else if (this.tab == Neurolink_Dialog_Mainframe.InfoCardTab.Stats) { if (this.selectedHarddrive != null) { Thing innerPawn = this.selectedHarddrive.pawn; MinifiedThing minifiedThing = (Thing)this.selectedHarddrive as MinifiedThing; if (minifiedThing != null) { innerPawn = minifiedThing.InnerThing; } StatsReportUtility.DrawStatsReport(cardRect, innerPawn); } // else if (this.titleDef != null) { //%TODO% // StatsReportUtility.DrawStatsReport(cardRect, this.titleDef, this.faction); // } } else if (this.tab == Neurolink_Dialog_Mainframe.InfoCardTab.Social) { SocialCardUtility.DrawSocialCard(cardRect, this.selectedHarddrive.pawn); } else if (this.tab == Neurolink_Dialog_Mainframe.InfoCardTab.Needs) { Vector2 scrollPos = default(Vector2); NeedsCardUtility.DoNeedsMoodAndThoughts(cardRect, this.selectedHarddrive.pawn, ref scrollPos); } }
protected override void FillTab() { this.UpdateSize(); Rect rect = new Rect(17f, 17f, CharacterCardUtility.PawnCardSize(this.PawnToShowInfoAbout).x, CharacterCardUtility.PawnCardSize(this.PawnToShowInfoAbout).y); //Vector2 vector = CharacterCardUtility.PawnCardSize(this.PawnToShowInfoAbout); VoidKeyCardUtility.DrawCharacterCard(rect, this.PawnToShowInfoAbout, this.SelThing, null, default(Rect)); }
protected void FillCard(Rect cardRect) { if (tab == InfoCardTab.Stats) { if (thing != null) { Thing innerThing = thing; MinifiedThing minifiedThing = thing as MinifiedThing; if (minifiedThing != null) { innerThing = minifiedThing.InnerThing; } StatsReportUtility.DrawStatsReport(cardRect, innerThing); } else if (titleDef != null) { StatsReportUtility.DrawStatsReport(cardRect, titleDef, faction); } else if (faction != null) { StatsReportUtility.DrawStatsReport(cardRect, faction); } else if (worldObject != null) { StatsReportUtility.DrawStatsReport(cardRect, worldObject); } else if (def is AbilityDef) { StatsReportUtility.DrawStatsReport(cardRect, (AbilityDef)def); } else { StatsReportUtility.DrawStatsReport(cardRect, def, stuff); } } else if (tab == InfoCardTab.Character) { CharacterCardUtility.DrawCharacterCard(cardRect, (Pawn)thing); } else if (tab == InfoCardTab.Health) { cardRect.yMin += 8f; HealthCardUtility.DrawPawnHealthCard(cardRect, (Pawn)thing, allowOperations: false, showBloodLoss: false, null); } else if (tab == InfoCardTab.Records) { RecordsCardUtility.DrawRecordsCard(cardRect, (Pawn)thing); } else if (tab == InfoCardTab.Permits) { PermitsCardUtility.DrawRecordsCard(cardRect, (Pawn)thing); } if (executeAfterFillCardOnce != null) { executeAfterFillCardOnce(); executeAfterFillCardOnce = null; } }
protected override void UpdateSize() { base.UpdateSize(); Vector2 margins = new Vector2(17f, 17f) * 2f; Vector2 defaultSize = CharacterCardUtility.PawnCardSize(PawnToShowInfoAbout) - new Vector2(tabSizeAdjust, 0f); Vector2 expandedSize = new Vector2(ResearchTree_Tree.RelevantTechLevels.Count() * (/*nodeSize.x*/ extendedNodeLength + margin) - margin, defaultSize.y); size = expandTab ? expandedSize + margins : defaultSize + margins; }
public override void UpdateSize() { base.UpdateSize(); Vector2 margins = new Vector2(17f, 17f) * 2f; Vector2 defaultSize = CharacterCardUtility.PawnCardSize(PawnToShowInfoAbout) - new Vector2(tabSizeAdjust, 0f); Vector2 expandedSize = new Vector2(maxColumns * columnWidth, defaultSize.y); size = expandTab ? expandedSize + margins : defaultSize + margins; }
public override void DoWindowContents(Rect rect) { base.DrawPageTitle(rect); Rect mainRect = base.GetMainRect(rect, 30f, false); Widgets.DrawMenuSection(mainRect, true); TabDrawer.DrawTabs(mainRect, from c in Find.GameInitData.startingPawns select new TabRecord(c.LabelCap, delegate { this.SelectPawn(c); }, c == this.curPawn)); Rect rect2 = mainRect.ContractedBy(17f); Rect rect3 = rect2; rect3.width = 100f; GUI.DrawTexture(new Rect(rect3.xMin + (rect3.width - Page_ConfigureStartingPawns.PawnPortraitSize.x) / 2f - 10f, rect3.yMin + 20f, Page_ConfigureStartingPawns.PawnPortraitSize.x, Page_ConfigureStartingPawns.PawnPortraitSize.y), PortraitsCache.Get(this.curPawn, Page_ConfigureStartingPawns.PawnPortraitSize, default(Vector3), 1f)); Rect rect4 = rect2; rect4.xMin = rect3.xMax; Rect rect5 = rect4; rect5.width = 475f; CharacterCardUtility.DrawCharacterCard(rect5, this.curPawn, new Action(this.RandomizeCurPawn)); Rect rect6 = new Rect(rect5.xMax + 5f, rect4.y + 100f, rect4.width - rect5.width - 5f, 200f); Text.Font = GameFont.Medium; Widgets.Label(rect6, "Health".Translate()); Text.Font = GameFont.Small; rect6.yMin += 35f; HealthCardUtility.DrawHediffListing(rect6, this.curPawn, true); Rect rect7 = new Rect(rect6.x, rect6.yMax, rect6.width, 200f); Text.Font = GameFont.Medium; Widgets.Label(rect7, "Relations".Translate()); Text.Font = GameFont.Small; rect7.yMin += 35f; SocialCardUtility.DrawRelationsAndOpinions(rect7, this.curPawn); // EdB: Add a middle "Prepare Carefully" button. // base.DoBottomButtons(rect, "Start".Translate(), null, null, true); Action prepareCarefullyAction = () => { PrepareCarefully.Instance.Initialize(); PrepareCarefully.Instance.OriginalPage = this; Find.WindowStack.Add(new Page_ConfigureStartingPawnsCarefully()); if (!PrepareCarefully.Instance.FindScenPart()) { Find.WindowStack.Add(new Dialog_Confirm("EdB.PrepareCarefully.ModConfigProblem.Description".Translate(), delegate { }, true, "EdB.PrepareCarefully.ModConfigProblem.Title".Translate(), false)); } }; base.DoBottomButtons(rect, "Start".Translate(), "EdB.PrepareCarefully".Translate(), prepareCarefullyAction, true); }
public static bool FillTabP(ITab_Pawn_Character __instance) { FieldInfo fi = typeof(ITab_Pawn_Character).GetField("size", Unprivater.flags); fi.SetValue(__instance, new Vector2(cardX + 34f, cardY + 34f)); var p = Unprivater.GetProtectedProperty <Pawn>("PawnToShowInfoAbout", __instance); Rect rect = new Rect(17f, 17f, 570f, cardY); CharacterCardUtility.DrawCharacterCard(rect, p, null, default(Rect)); return(false); }
private static void Postfix(Rect rect, Pawn pawn, Action randomizeCallback) { CompSkillPoints spcomp = pawn.TryGetComp <CompSkillPoints>(); if (spcomp == null) { return; } float width = Base.panelAddedWidth - margin; float x = CharacterCardUtility.PawnCardSize(pawn).x; if (randomizeCallback != null) // this is how the game checks if we're in the character creation screen (shrug) { x += 175f; } Rect extraRect = new Rect(x + margin, rect.y, width, 100f); ITab_Skills.DrawRankInfo(extraRect, pawn); }
// RimWorld.ITab_Pawn_Character public static bool Vamp_FillTab(ITab_Pawn_Character __instance) { Pawn p = (Pawn)AccessTools.Method(typeof(ITab_Pawn_Character), "get_PawnToShowInfoAbout") .Invoke(__instance, null); if (p.IsVampire() || p.IsGhoul()) { Rect rect = new Rect(17f, 17f, CharacterCardUtility.BasePawnCardSize.x, CharacterCardUtility.BasePawnCardSize.y); if (isSwitched) { VampireCardUtility.DrawVampCard(rect, p); } else { CharacterCardUtility.DrawCharacterCard(rect, p); } return(false); } return(true); }
public override void DoWindowContents(Rect rect) { base.DrawPageTitle(rect); Rect mainRect = base.GetMainRect(rect, 30f, false); Widgets.DrawMenuSection(mainRect, true); TabDrawer.DrawTabs(mainRect, from c in Find.GameInitData.startingPawns select new TabRecord(c.LabelCap, delegate { this.SelectPawn(c); }, c == this.curPawn)); Rect rect2 = mainRect.ContractedBy(17f); Rect rect3 = rect2; rect3.width = 100f; GUI.DrawTexture(new Rect(rect3.xMin + (rect3.width - Page_ConfigureStartingSlaves.PawnPortraitSize.x) / 2f - 10f, rect3.yMin + 20f, Page_ConfigureStartingSlaves.PawnPortraitSize.x, Page_ConfigureStartingSlaves.PawnPortraitSize.y), PortraitsCache.Get(this.curPawn, Page_ConfigureStartingSlaves.PawnPortraitSize, default(Vector3), 1f)); Rect rect4 = rect2; rect4.xMin = rect3.xMax; Rect rect5 = rect4; rect5.width = 475f; CharacterCardUtility.DrawCharacterCard(rect5, this.curPawn, new Action(this.RandomizeCurPawn)); Rect rect6 = new Rect(rect5.xMax + 5f, rect4.y + 100f, rect4.width - rect5.width - 5f, 200f); Text.Font = GameFont.Medium; Widgets.Label(rect6, "Health".Translate()); Text.Font = GameFont.Small; rect6.yMin += 35f; HealthCardUtility.DrawHediffListing(rect6, this.curPawn, true); Rect rect7 = new Rect(rect6.x, rect6.yMax, rect6.width, 200f); Text.Font = GameFont.Medium; Widgets.Label(rect7, "Relations".Translate()); Text.Font = GameFont.Small; rect7.yMin += 35f; SocialCardUtility.DrawRelationsAndOpinions(rect7, this.curPawn); base.DoBottomButtons(rect, "Next".Translate(), null, null, true); }
public override void DoWindowContents(Rect rect) { DrawPageTitle(rect); var mainRect = GetMainRect(rect, 30f); Widgets.DrawMenuSection(mainRect); TabDrawer.DrawTabs(mainRect, (from c in Find.GameInitData.startingAndOptionalPawns select new TabRecord(c.LabelCap, delegate { SelectPawn(c); }, c == curPawn)).ToList()); var rect2 = mainRect.ContractedBy(17f); var rect3 = rect2; rect3.width = 100f; GUI.DrawTexture( new Rect(rect3.xMin + ((rect3.width - PawnPortraitSize.x) / 2f) - 10f, rect3.yMin + 20f, PawnPortraitSize.x, PawnPortraitSize.y), PortraitsCache.Get(curPawn, PawnPortraitSize, Rot4.South)); var rect4 = rect2; rect4.xMin = rect3.xMax; var rect5 = rect4; rect5.width = 475f; CharacterCardUtility.DrawCharacterCard(rect5, curPawn, RandomizeCurPawn); var rect6 = new Rect(rect5.xMax + 5f, rect4.y + 100f, rect4.width - rect5.width - 5f, 200f); Text.Font = GameFont.Medium; Widgets.Label(rect6, "Health".Translate()); Text.Font = GameFont.Small; rect6.yMin += 35f; HealthCardUtility.DrawHediffListing(rect6, curPawn, true); var rect7 = new Rect(rect6.x, rect6.yMax, rect6.width, 200f); Text.Font = GameFont.Medium; Widgets.Label(rect7, "Relations".Translate()); Text.Font = GameFont.Small; rect7.yMin += 35f; SocialCardUtility.DrawRelationsAndOpinions(rect7, curPawn); DoBottomButtons(rect, "Next".Translate()); }
protected void FillCard(Rect cardRect) { if (this.tab == Dialog_InfoCard.InfoCardTab.Stats) { if (this.thing != null) { Thing innerThing = this.thing; MinifiedThing minifiedThing = this.thing as MinifiedThing; if (minifiedThing != null) { innerThing = minifiedThing.InnerThing; } StatsReportUtility.DrawStatsReport(cardRect, innerThing); } else if (this.worldObject != null) { StatsReportUtility.DrawStatsReport(cardRect, this.worldObject); } else { StatsReportUtility.DrawStatsReport(cardRect, this.def, this.stuff); } } else if (this.tab == Dialog_InfoCard.InfoCardTab.Character) { CharacterCardUtility.DrawCharacterCard(cardRect, (Pawn)this.thing, null, default(Rect)); } else if (this.tab == Dialog_InfoCard.InfoCardTab.Health) { cardRect.yMin += 8f; HealthCardUtility.DrawPawnHealthCard(cardRect, (Pawn)this.thing, false, false, null); } else if (this.tab == Dialog_InfoCard.InfoCardTab.Records) { RecordsCardUtility.DrawRecordsCard(cardRect, (Pawn)this.thing); } }
protected void FillCard(Rect cardRect) { if (tab == InfoCardTab.Stats) { if (thing != null) { Thing innerThing = thing; MinifiedThing minifiedThing = thing as MinifiedThing; if (minifiedThing != null) { innerThing = minifiedThing.InnerThing; } StatsReportUtility.DrawStatsReport(cardRect, innerThing); } else if (worldObject != null) { StatsReportUtility.DrawStatsReport(cardRect, worldObject); } else { StatsReportUtility.DrawStatsReport(cardRect, def, stuff); } } else if (tab == InfoCardTab.Character) { CharacterCardUtility.DrawCharacterCard(cardRect, (Pawn)thing); } else if (tab == InfoCardTab.Health) { cardRect.yMin += 8f; HealthCardUtility.DrawPawnHealthCard(cardRect, (Pawn)thing, allowOperations: false, showBloodLoss: false, null); } else if (tab == InfoCardTab.Records) { RecordsCardUtility.DrawRecordsCard(cardRect, (Pawn)thing); } }
protected override void UpdateSize() { base.UpdateSize(); this.size = CharacterCardUtility.PawnCardSize(this.PawnToShowInfoAbout) + new Vector2(17f, 17f) * 2f; }
// Token: 0x06000032 RID: 50 RVA: 0x00003078 File Offset: 0x00001278 public override void DoWindowContents(Rect inRect) { var crafterProperties = pawnCrafter.def.GetModExtension <PawnCrafterProperties>(); if (newChildhoodBackstory != null) { newPawn.story.childhood = newChildhoodBackstory; newChildhoodBackstory = null; RefreshPawn(); } if (newAdulthoodBackstory != null) { newPawn.story.adulthood = newAdulthoodBackstory; newAdulthoodBackstory = null; RefreshPawn(); } if (traitsChanged) { var first = newTrait.First; var second = newTrait.Second; if (first < newPawn.story.traits.allTraits.Count) { newPawn.story.traits.allTraits.RemoveAt(first); newPawn.story.traits.allTraits.Insert(first, second); if (newPawn.workSettings != null) { newPawn.workSettings.Notify_DisabledWorkTypesChanged(); } if (newPawn.skills != null) { newPawn.skills.Notify_SkillDisablesChanged(); } if (!newPawn.Dead && newPawn.RaceProps.Humanlike) { newPawn.needs.mood.thoughts.situational.Notify_SituationalThoughtsDirty(); } } else { newPawn.story.traits.GainTrait(second); } newTrait = default; traitsChanged = false; traitPos = -1; RefreshPawn(); } var rect = new Rect(inRect) { width = PawnPortraitSize.x + 16f, height = PawnPortraitSize.y + 16f }; rect = rect.CenteredOnXIn(inRect); rect = rect.CenteredOnYIn(inRect); rect.x += 16f; rect.y += 16f; if (newPawn != null) { var rect2 = new Rect(rect.xMin + ((rect.width - PawnPortraitSize.x) / 2f) - 10f, rect.yMin + 20f, PawnPortraitSize.x, PawnPortraitSize.y); GUI.DrawTexture(rect2, PortraitsCache.Get(newPawn, PawnPortraitSize, Rot4.South)); Widgets.InfoCardButton(rect2.xMax - 16f, rect2.y, newPawn); Text.Font = GameFont.Medium; Text.Anchor = TextAnchor.MiddleCenter; Widgets.Label(new Rect(0f, 0f, inRect.width, 32f), crafterProperties.crafterPawnCustomizationTitle.Translate()); Text.Font = GameFont.Small; Text.Anchor = TextAnchor.MiddleLeft; var num = 32f; var rect3 = new Rect(32f, num, 240f, 24f); if (newPawn.Name is NameTriple nameTriple) { var rect4 = new Rect(rect3); rect4.width *= 0.333f; var rect5 = new Rect(rect3); rect5.width *= 0.333f; rect5.x += rect5.width; var rect6 = new Rect(rect3); rect6.width *= 0.333f; rect6.x += rect5.width * 2f; var first2 = nameTriple.First; var nick = nameTriple.Nick; var last = nameTriple.Last; CharacterCardUtility.DoNameInputRect(rect4, ref first2, 12); if (nameTriple.Nick == nameTriple.First || nameTriple.Nick == nameTriple.Last) { GUI.color = new Color(1f, 1f, 1f, 0.5f); } CharacterCardUtility.DoNameInputRect(rect5, ref nick, 9); GUI.color = Color.white; CharacterCardUtility.DoNameInputRect(rect6, ref last, 12); if (nameTriple.First != first2 || nameTriple.Nick != nick || nameTriple.Last != last) { newPawn.Name = new NameTriple(first2, nick, last); } TooltipHandler.TipRegion(rect4, "FirstNameDesc".Translate()); TooltipHandler.TipRegion(rect5, "ShortIdentifierDesc".Translate()); TooltipHandler.TipRegion(rect6, "LastNameDesc".Translate()); } else { rect3.width = 999f; Text.Font = GameFont.Medium; Widgets.Label(rect3, newPawn.Name.ToStringFull); Text.Font = GameFont.Small; } var rect7 = new Rect(rect.x + rect.width + 16f, rect.y + 32f, inRect.width - (rect.x + rect.width + 16f), 32f); Text.Font = GameFont.Medium; if (Widgets.ButtonText(rect7, crafterProperties.crafterPawnCustomizationCraftButton.Translate(), true, false)) { pawnCrafter.pawnBeingCrafted = newPawn; pawnCrafter.crafterStatus = CrafterStatus.Filling; Close(); } Text.Font = GameFont.Small; if (Widgets.ButtonText(new Rect(304f, num, 120f, 24f), crafterProperties.crafterPawnCustomizationCraftRollFemaleButton.Translate(), true, false)) { newPawn.Destroy(); newPawn = GetNewPawn(); } if (Widgets.ButtonText(new Rect(424f, num, 120f, 24f), crafterProperties.crafterPawnCustomizationCraftRollMaleButton.Translate(), true, false)) { newPawn.Destroy(); newPawn = GetNewPawn(Gender.Male); } num += 26f; var rect8 = new Rect(32f, num, 240f, 24f); Widgets.DrawBox(rect8); Widgets.DrawHighlightIfMouseover(rect8); string text; if (newPawn.story.childhood != null) { text = crafterProperties.crafterPawnCustomizationCraftChildhoodBackstoryButton.Translate() + " " + newPawn.story.childhood.titleShort; } else { text = crafterProperties.crafterPawnCustomizationCraftChildhoodBackstoryButton.Translate() + " " + crafterProperties.crafterPawnCustomizationNone.Translate(); } if (Widgets.ButtonText(rect8, text, true, false)) { FloatMenuUtility.MakeMenu(from backstory in BackstoryDatabase.allBackstories.Select( delegate(KeyValuePair <string, Backstory> backstoryPair) { var keyValuePair = backstoryPair; return(keyValuePair.Value); }) where backstory.spawnCategories.Contains(crafterProperties .crafterPawnCustomizationPawnBackstoryTag) && backstory.slot == BackstorySlot.Childhood select backstory, backstory => backstory.titleShort, backstory => delegate { newChildhoodBackstory = backstory; }); } if (newPawn.story.childhood != null) { TooltipHandler.TipRegion(rect8, newPawn.story.childhood.FullDescriptionFor(newPawn)); } var rect9 = new Rect(304f, num, 240f, 24f); Widgets.DrawBox(rect9); Widgets.DrawHighlightIfMouseover(rect9); string text2; if (newPawn.story.adulthood != null) { text2 = crafterProperties.crafterPawnCustomizationCraftAdulthoodBackstoryButton.Translate() + " " + newPawn.story.adulthood.titleShort; } else { text2 = crafterProperties.crafterPawnCustomizationCraftAdulthoodBackstoryButton.Translate() + " " + crafterProperties.crafterPawnCustomizationNone.Translate(); } if (Widgets.ButtonText(rect9, text2, true, false)) { FloatMenuUtility.MakeMenu(from backstory in BackstoryDatabase.allBackstories.Select( delegate(KeyValuePair <string, Backstory> backstoryPair) { var keyValuePair = backstoryPair; return(keyValuePair.Value); }) where backstory.spawnCategories.Contains(crafterProperties .crafterPawnCustomizationPawnBackstoryTag) && backstory.slot == BackstorySlot.Adulthood select backstory, backstory => backstory.titleShort, backstory => delegate { newAdulthoodBackstory = backstory; }); } if (newPawn.story.adulthood != null) { TooltipHandler.TipRegion(rect9, newPawn.story.adulthood.FullDescriptionFor(newPawn)); } num += 48f; var vector = new Vector2(32f, num); SkillUI.DrawSkillsOf(newPawn, vector, SkillUI.SkillDrawMode.Gameplay); num = rect.y + rect.height; var num2 = rect.x + 24f; Text.Anchor = TextAnchor.MiddleCenter; foreach (var trait in newPawn.story.traits.allTraits) { var rect10 = new Rect(num2, num, 256f, 24f); Widgets.DrawBox(rect10); Widgets.DrawHighlightIfMouseover(rect10); Widgets.Label(rect10, trait.LabelCap); TooltipHandler.TipRegion(rect10, trait.TipString(newPawn)); num += 26f; } } Text.Anchor = 0; }
public static bool DrawCharacterCardP(ref Rect rect, ref Pawn pawn, ref Action randomizeCallback, ref Rect creationRect) { rect.position = new Vector2(17f, 17f); rect.size = new Vector2(cardX, cardY); bool flag = randomizeCallback != null; GUI.BeginGroup((!flag) ? rect : creationRect); Rect rectLabel = new Rect(0f, 0f, 300f, 30f); NameTriple nameTriple = pawn.Name as NameTriple; if (flag && nameTriple != null) { Rect rect3 = new Rect(rectLabel); rect3.width *= 0.333f; Rect rect4 = new Rect(rectLabel); rect4.width *= 0.333f; rect4.x += rect4.width; Rect rect5 = new Rect(rectLabel); rect5.width *= 0.333f; rect5.x += rect4.width * 2f; string first = nameTriple.First; string nick = nameTriple.Nick; string last = nameTriple.Last; CharacterCardUtility.DoNameInputRect(rect3, ref first, 12); if (nameTriple.Nick == nameTriple.First || nameTriple.Nick == nameTriple.Last) { GUI.color = new Color(1f, 1f, 1f, 0.5f); } CharacterCardUtility.DoNameInputRect(rect4, ref nick, 9); GUI.color = Color.white; CharacterCardUtility.DoNameInputRect(rect5, ref last, 12); if (nameTriple.First != first || nameTriple.Nick != nick || nameTriple.Last != last) { pawn.Name = new NameTriple(first, nick, last); } TooltipHandler.TipRegion(rect3, "FirstNameDesc".Translate()); TooltipHandler.TipRegion(rect4, "ShortIdentifierDesc".Translate()); TooltipHandler.TipRegion(rect5, "LastNameDesc".Translate()); } else { rectLabel.width = 999f; Text.Font = GameFont.Medium; Widgets.Label(rectLabel, pawn.Name.ToStringFull); Text.Font = GameFont.Small; } if (randomizeCallback != null) { Rect rectRandomise = new Rect(creationRect.width - 24f - 100f, 0f, 100f, rectLabel.height); if (Widgets.ButtonText(rectRandomise, "Randomize".Translate(), true, false, true)) { SoundDefOf.TickTiny.PlayOneShotOnCamera(null); randomizeCallback(); } UIHighlighter.HighlightOpportunity(rectRandomise, "RandomizePawn"); } if (flag) { Widgets.InfoCardButton(creationRect.width - 24f, 0f, pawn); } else if (!pawn.health.Dead) { float num = CharacterCardUtility.PawnCardSize.x - 85f; if ((pawn.Faction == Faction.OfPlayer || pawn.IsPrisonerOfColony) && pawn.Spawned) { Rect rectBanish = new Rect(num, 0f, 30f, 30f); TooltipHandler.TipRegion(rectBanish, PawnBanishUtility.GetBanishButtonTip(pawn)); if (Widgets.ButtonImage(rectBanish, ContentFinder <Texture2D> .Get("UI/Buttons/Banish", true))) { if (pawn.Downed) { Messages.Message("MessageCantBanishDownedPawn".Translate(new object[] { pawn.LabelShort }).AdjustedFor(pawn), pawn, MessageTypeDefOf.RejectInput); } else { PawnBanishUtility.ShowBanishPawnConfirmationDialog(pawn); } } num -= 40f; } if (pawn.IsColonist) { Rect rect8 = new Rect(num, 0f, 30f, 30f); TooltipHandler.TipRegion(rect8, "RenameColonist".Translate()); if (Widgets.ButtonImage(rect8, ContentFinder <Texture2D> .Get("UI/Buttons/Rename", true))) { Find.WindowStack.Add(new Dialog_ChangeNameTriple(pawn)); } num -= 40f; } } string label = pawn.MainDesc(true); Rect rectMainDesc = new Rect(0f, 45f, rect.width, 60f); Widgets.Label(rectMainDesc, label); Pawn p = pawn; TooltipHandler.TipRegion(rectMainDesc, () => p.ageTracker.AgeTooltipString, 6873641); Rect positionLeftHalf = new Rect(0f, 100f, 250f, cardY); Rect positionRightHalf = new Rect(positionLeftHalf.xMax, 100f, 258f, cardY); GUI.BeginGroup(positionLeftHalf); float currentY = 0f; Text.Font = GameFont.Medium; Widgets.Label(new Rect(0f, 0f, 200f, 30f), "Backstory".Translate()); currentY += 30f; Text.Font = GameFont.Small; foreach (BackstorySlot backstorySlot in Enum.GetValues(typeof(BackstorySlot))) { Backstory backstory = pawn.story.GetBackstory(backstorySlot); if (backstory != null) { Rect rect10 = new Rect(0f, currentY, positionLeftHalf.width, 24f); if (Mouse.IsOver(rect10)) { Widgets.DrawHighlight(rect10); } TooltipHandler.TipRegion(rect10, backstory.FullDescriptionFor(pawn)); Text.Anchor = TextAnchor.MiddleLeft; string str = (backstorySlot != BackstorySlot.Adulthood) ? "Childhood".Translate() : "Adulthood".Translate(); Widgets.Label(rect10, str + ":"); Text.Anchor = TextAnchor.UpperLeft; Rect rect11 = new Rect(rect10); rect11.x += 90f; rect11.width -= 90f; string title = backstory.Title; Widgets.Label(rect11, title); currentY += rect10.height + 2f; } } currentY += 25f; Text.Font = GameFont.Small; Widgets.Label(new Rect(0f, currentY, 200f, 30f), "IncapableOf".Translate()); currentY += 30f; Text.Font = GameFont.Small; StringBuilder stringBuilder = new StringBuilder(); WorkTags combinedDisabledWorkTags = pawn.story.CombinedDisabledWorkTags; if (combinedDisabledWorkTags == WorkTags.None) { stringBuilder.Append("(" + "NoneLower".Translate() + "), "); } else { List <WorkTags> list = WorkTagsFrom(combinedDisabledWorkTags).ToList <WorkTags>(); bool flag2 = true; foreach (WorkTags current in list) { if (flag2) { stringBuilder.Append(current.LabelTranslated().CapitalizeFirst()); } else { stringBuilder.Append(current.LabelTranslated()); } stringBuilder.Append(", "); flag2 = false; } } string text = stringBuilder.ToString(); text = text.Substring(0, text.Length - 2); Rect rect12 = new Rect(0f, currentY, positionLeftHalf.width, 999f); Widgets.Label(rect12, text); currentY += 100f; Text.Font = GameFont.Medium; Widgets.Label(new Rect(0f, currentY, 200f, 30f), "Traits".Translate()); currentY += 30f; Text.Font = GameFont.Small; for (int i = 0; i < pawn.story.traits.allTraits.Count; i++) { Trait trait = pawn.story.traits.allTraits[i]; Rect rectCurrentTrait = new Rect(0f, currentY, positionLeftHalf.width, 24f); if (Mouse.IsOver(rectCurrentTrait)) { Widgets.DrawHighlight(rectCurrentTrait); } Widgets.Label(rectCurrentTrait, trait.LabelCap); currentY += rectCurrentTrait.height + 2f; Trait trLocal = trait; TipSignal tip = new TipSignal(() => trLocal.TipString(p), (int)currentY * 37); TooltipHandler.TipRegion(rectCurrentTrait, tip); } GUI.EndGroup(); GUI.BeginGroup(positionRightHalf); Text.Font = GameFont.Medium; Widgets.Label(new Rect(0f, 0f, 200f, 30f), "Skills".Translate()); SkillUI.SkillDrawMode mode; if (Current.ProgramState == ProgramState.Playing) { mode = SkillUI.SkillDrawMode.Gameplay; } else { mode = SkillUI.SkillDrawMode.Menu; } SkillUI.DrawSkillsOf(pawn, new Vector2(0f, 35f), mode); GUI.EndGroup(); GUI.EndGroup(); return(false); }