Esempio n. 1
0
 //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);
     }
 }
Esempio n. 2
0
        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;
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
            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);
            }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        // 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);
        }
Esempio n. 10
0
        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());
        }
Esempio n. 12
0
 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);
     }
 }
Esempio n. 13
0
 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);
     }
 }
Esempio n. 14
0
 protected override void UpdateSize()
 {
     base.UpdateSize();
     this.size = CharacterCardUtility.PawnCardSize(this.PawnToShowInfoAbout) + new Vector2(17f, 17f) * 2f;
 }
Esempio n. 15
0
        // 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;
        }
Esempio n. 16
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);
            }