diff --git a/Languages/ChineseSimplified/Keyed/Keys.xml b/Languages/ChineseSimplified/Keyed/Keys.xml index 351e4f7..474d6b3 100644 --- a/Languages/ChineseSimplified/Keyed/Keys.xml +++ b/Languages/ChineseSimplified/Keyed/Keys.xml @@ -30,5 +30,9 @@ 载入布局存档 没有布局存档 保存当前布局 - + + 捕食者 + 怀孕 + 性别 + \ No newline at end of file diff --git a/Numbers/MainTabWindow_Numbers.cs b/Numbers/MainTabWindow_Numbers.cs index d8f3a83..99e4db7 100644 --- a/Numbers/MainTabWindow_Numbers.cs +++ b/Numbers/MainTabWindow_Numbers.cs @@ -177,6 +177,16 @@ public override void DoWindowContents(Rect rect) //other btn DoButton("MiscRecordsCategory".Translate(), optionsMaker.OtherOptionsMaker(), ref x); + + //ManageAutoSlaughter btn + if (new[] { NumbersDefOf.Numbers_Animals }.Contains(PawnTableDef)) + { + if (Widgets.ButtonText(new Rect(x, 0f, buttonWidth, buttonHeight), "ManageAutoSlaughter".Translate())) + { + Find.WindowStack.Add(new Dialog_AutoSlaughter(Find.CurrentMap)); + x += buttonWidth + buttonGap; + } + } //presets button float startPositionOfPresetsButton = Mathf.Max(rect.xMax - buttonWidth - Margin, x); diff --git a/Numbers/Numbers.cs b/Numbers/Numbers.cs index 8ebd90c..91b468d 100644 --- a/Numbers/Numbers.cs +++ b/Numbers/Numbers.cs @@ -70,7 +70,7 @@ private static void Columndefs() } var pred = DefDatabase.GetNamed("Predator"); pred.sortable = true; - pred.headerTip = "Predator"; + pred.headerTip = "Predator".Translate(); } private static bool RightClickToRemoveHeader(PawnColumnWorker __instance, Rect headerRect, PawnTable table) diff --git a/Numbers/OptionsMaker.cs b/Numbers/OptionsMaker.cs index 496a249..4241785 100644 --- a/Numbers/OptionsMaker.cs +++ b/Numbers/OptionsMaker.cs @@ -63,14 +63,14 @@ public List PresetOptionsMaker() list.Insert(6 + savedLayouts.Count, new FloatMenuOption("Numbers_Presets.Load".Translate("Numbers_Presets.Psycasting".Translate()), () => ChangeMainTableTo(StaticConstructorOnGameStart.psycastingPreset))); } - return list; + return list.Distinct(new FloatMenuOptionComparer()).ToList(); } private IEnumerable General() { yield return new FloatMenuOption("Race".Translate(), () => AddPawnColumnAtBestPositionAndRefresh(DefDatabase.GetNamedSilentFail("Numbers_Race"))); yield return new FloatMenuOption("Faction".Translate(), () => AddPawnColumnAtBestPositionAndRefresh(DefDatabase.GetNamedSilentFail("Numbers_Faction"))); - yield return new FloatMenuOption("Gender", () => AddPawnColumnAtBestPositionAndRefresh(DefDatabase.GetNamedSilentFail("Gender"))); + yield return new FloatMenuOption("Gender".Translate(), () => AddPawnColumnAtBestPositionAndRefresh(DefDatabase.GetNamedSilentFail("Gender"))); } public List FloatMenuOptionsFor(IEnumerable pcdList) @@ -121,7 +121,6 @@ public List OtherOptionsMaker() if (PawnTable == NumbersDefOf.Numbers_WildAnimals) { - list.RemoveAll(x => x.Label == "Gender"); //duplicate list.AddRange(FloatMenuOptionsFor(PawnColumnOptionDefOf.WildAnimals.options .Concat(DefDatabase.GetNamed("Wildlife").columns) .Where(x => pcdValidator(x)))); @@ -133,7 +132,9 @@ public List OtherOptionsMaker() list.AddRange(FloatMenuOptionsFor(PawnColumnOptionDefOf.DeadThings.options)); } - return [.. list.OrderBy(x => x.Label)]; + return list.Distinct(new FloatMenuOptionComparer()) + .OrderBy(x => x.Label) + .ToList(); } public List OptionsMakerForGenericDef(IEnumerable listOfDefs) where T : Def @@ -151,7 +152,7 @@ void Action() list.Add(new FloatMenuOption(label, Action)); } - return list; + return list.Distinct(new FloatMenuOptionComparer()).ToList(); } public List PawnSelector() @@ -255,15 +256,15 @@ private static string GetBestLabelForPawnColumn(PawnColumnDef pcd) return string.Empty; if (pcd.workType != null) - return pcd.workType.labelShort; + return pcd.workType.labelShort.Translate(); if (!pcd.LabelCap.NullOrEmpty()) - return pcd.LabelCap; + return pcd.LabelCap.ToString().Translate(); if (!pcd.headerTip.NullOrEmpty()) - return pcd.headerTip; + return pcd.headerTip.Translate(); - return pcd.defName; + return pcd.defName.Translate(); } private void AddPawnColumnAtBestPositionAndRefresh(PawnColumnDef pcd) @@ -300,5 +301,18 @@ private void AddPawnColumnAtBestPositionAndRefresh(PawnColumnDef pcd) } }; //basically all that are already present, don't have an interactable header, and uh + + private class FloatMenuOptionComparer : IEqualityComparer + { + public bool Equals(FloatMenuOption x, FloatMenuOption y) + { + return x?.Label == y?.Label; + } + + public int GetHashCode(FloatMenuOption obj) + { + return obj.Label.GetHashCode(); + } + } } } diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Age.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Age.cs index a8f13cb..e9bb5d0 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Age.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Age.cs @@ -3,9 +3,13 @@ using System; using RimWorld; using Verse; + using UnityEngine; public class PawnColumnWorker_Age : PawnColumnWorker_Text { + + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) => Math.Round(pawn.ageTracker.AgeBiologicalYearsFloat, 2).ToString("0.00"); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalEggProgress.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalEggProgress.cs index 13b2c29..0f656d6 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalEggProgress.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalEggProgress.cs @@ -1,12 +1,14 @@ namespace Numbers { - using System.Linq; + using UnityEngine; using HarmonyLib; using RimWorld; using Verse; public class PawnColumnWorker_AnimalEggProgress : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { if (pawn.ageTracker.CurLifeStage.reproductive) diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalFilthRate.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalFilthRate.cs index dddcaab..250e894 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalFilthRate.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalFilthRate.cs @@ -2,9 +2,12 @@ { using RimWorld; using Verse; + using UnityEngine; public class PawnColumnWorker_AnimalFilthRate : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { return GetScoreFor(pawn).ToString("F2"); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalMilkFullness.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalMilkFullness.cs index e89a34b..c9ac209 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalMilkFullness.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalMilkFullness.cs @@ -1,11 +1,13 @@ namespace Numbers { - using System.Linq; + using UnityEngine; using RimWorld; using Verse; public class PawnColumnWorker_AnimalMilkFullness : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { if (pawn.ageTracker.CurLifeStage.milkable) diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalWildness.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalWildness.cs index e14db1b..547a85c 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalWildness.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalWildness.cs @@ -2,9 +2,12 @@ { using RimWorld; using Verse; + using UnityEngine; public class PawnColumnWorker_AnimalWildness : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + public override int Compare(Pawn a, Pawn b) => (a.AnimalOrWildMan() || b.AnimalOrWildMan()) ? GetValue(a).CompareTo(GetValue(b)) diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalWoolGrowth.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalWoolGrowth.cs index 1bef1ac..2659fab 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalWoolGrowth.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalWoolGrowth.cs @@ -1,11 +1,13 @@ namespace Numbers { - using System.Linq; + using UnityEngine; using RimWorld; using Verse; public class PawnColumnWorker_AnimalWoolGrowth : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { if (pawn.ageTracker.CurLifeStage.shearable) diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Backstory.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Backstory.cs index 0746c92..3b471c0 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Backstory.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Backstory.cs @@ -2,9 +2,12 @@ { using RimWorld; using Verse; + using UnityEngine; public class PawnColumnWorker_Backstory : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) => pawn.story.TitleShortCap; diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Bleedrate.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Bleedrate.cs index f053391..1e881e6 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Bleedrate.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Bleedrate.cs @@ -10,6 +10,8 @@ public class PawnColumnWorker_Bleedrate : PawnColumnWorker_Text private static readonly Color SeverePainColor = new(0.9f, 0.5f, 0f); + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + public override int Compare(Pawn a, Pawn b) => a.health.hediffSet.BleedRateTotal.CompareTo(b.health.hediffSet.BleedRateTotal); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Capacity.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Capacity.cs index d03c9fc..fc1e9af 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Capacity.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Capacity.cs @@ -6,6 +6,8 @@ public class PawnColumnWorker_Capacity : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) => pawn.health.capacities.GetLevel(def.Ext().capacity).ToStringPercent(); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Entropy.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Entropy.cs index 0cfceb6..49b6f66 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Entropy.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Entropy.cs @@ -4,11 +4,8 @@ using UnityEngine; using Verse; - [StaticConstructorOnStartup] public class PawnColumnWorker_Entropy : PawnColumnWorker { - private static readonly Texture2D EntropyBarTex = SolidColorMaterials.NewSolidColorTexture(new Color(0.46f, 0.34f, 0.35f)); - //mostly from PawnColumnWorker_Need public override void DoCell(Rect rect, Pawn pawn, PawnTable table) @@ -30,7 +27,7 @@ public override void DoCell(Rect rect, Pawn pawn, PawnTable table) Rect rect3 = new(rect.x, rect.y + rect.height / 2f, rect.width, rect.height / 2f); rect3 = new Rect(rect3.x + barWidth, rect3.y, rect3.width - barWidth * 2f, rect3.height - barHeight); - Widgets.FillableBar(rect3, curEntropyLevel, EntropyBarTex); + Widgets.FillableBar(rect3, curEntropyLevel, StaticConstructorOnGameStart.EntropyBarTex); Text.Font = GameFont.Small; } diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Faction.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Faction.cs index 890a3ff..23f709e 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Faction.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Faction.cs @@ -6,6 +6,8 @@ class PawnColumnWorker_Faction : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) => pawn.Faction?.Name; diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_FoodConsumption.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_FoodConsumption.cs index 08a70db..d667b79 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_FoodConsumption.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_FoodConsumption.cs @@ -1,10 +1,13 @@ using RimWorld; +using UnityEngine; using Verse; namespace Numbers { public class PawnColumnWorker_FoodConsumption : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) => (pawn?.needs?.food?.FoodFallPerTickAssumingCategory(HungerCategory.Fed) * 60000f ?? 0).ToString("0.##"); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Genes.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Genes.cs index 2d5acf6..1558116 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Genes.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Genes.cs @@ -3,10 +3,13 @@ using System.Linq; using RimWorld; using Verse; + using UnityEngine; //todo: probably better with icons to hover over for a tooltip or smth public class PawnColumnWorker_Endogenes : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { return pawn.genes?.Endogenes?.Select(gene => gene.Label).ToCommaList(); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_GenesRegrowTime.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_GenesRegrowTime.cs index be131b8..bb788d1 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_GenesRegrowTime.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_GenesRegrowTime.cs @@ -2,10 +2,13 @@ { using RimWorld; using Verse; + using UnityEngine; //todo: probably better with icons to hover over for a tooltip or smth public class PawnColumnWorker_GenesRegrowTime : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + private int GetTicksRemaining(Pawn pawn) { var hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.XenogermReplicating); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Inspiration.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Inspiration.cs index 6d4b30c..3bd7f31 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Inspiration.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Inspiration.cs @@ -6,6 +6,8 @@ public class PawnColumnWorker_Inspiration : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) => pawn.InspirationDef?.LabelCap; diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_JobCurrent.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_JobCurrent.cs index 4ef8fd6..db25c20 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_JobCurrent.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_JobCurrent.cs @@ -6,6 +6,8 @@ public class PawnColumnWorker_JobCurrent : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { if (!Numbers_Settings.showMoreInfoThanVanilla && !(pawn.Faction == Faction.OfPlayer || pawn.HostFaction == Faction.OfPlayer) && !pawn.InMentalState) diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_JobQueued.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_JobQueued.cs index e78a995..d77795b 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_JobQueued.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_JobQueued.cs @@ -7,6 +7,8 @@ public class PawnColumnWorker_JobQueued : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { if (pawn.jobs?.jobQueue.Any() ?? false) diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_LeatherType.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_LeatherType.cs index bcc263f..49dd486 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_LeatherType.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_LeatherType.cs @@ -1,10 +1,13 @@ using RimWorld; +using UnityEngine; using Verse; namespace Numbers { public class PawnColumnWorker_LeatherType : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { return pawn.RaceProps?.leatherDef?.LabelCap; diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Meditation.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Meditation.cs index 7acb205..9f187a7 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Meditation.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Meditation.cs @@ -6,6 +6,8 @@ namespace Numbers { public class PawnColumnWorker_Meditation : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { return MeditationUtility.FocusTypesAvailableForPawnString(pawn); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_MentalState.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_MentalState.cs index 42b944c..cbcd11e 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_MentalState.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_MentalState.cs @@ -6,6 +6,8 @@ public class PawnColumnWorker_MentalState : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) => pawn.MentalState?.InspectLine ?? string.Empty; diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Pain.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Pain.cs index 4febc32..87e40e3 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Pain.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Pain.cs @@ -8,6 +8,8 @@ public class PawnColumnWorker_Pain : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) => pawn.health.hediffSet.PainTotal.ToStringPercent(); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_PrisonerResistance.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_PrisonerResistance.cs index 6c18847..d416542 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_PrisonerResistance.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_PrisonerResistance.cs @@ -6,6 +6,8 @@ public class PawnColumnWorker_PrisonerResistance : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { return pawn.guest.Resistance.ToString("F1"); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_PsylinkLevel.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_PsylinkLevel.cs index e77f607..3bfc4ed 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_PsylinkLevel.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_PsylinkLevel.cs @@ -2,9 +2,12 @@ { using RimWorld; using Verse; + using UnityEngine; public class PawnColumnWorker_PsylinkLevel : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) => (pawn.psychicEntropy?.Psylink?.level ?? 0).ToString(); diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Race.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Race.cs index 5144809..4d28aad 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Race.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Race.cs @@ -11,6 +11,8 @@ public class PawnColumnWorker_Race : PawnColumnWorker_Text { private readonly Dictionary widthsTables = WorldComponent_Numbers.PrimaryFilter.Keys.ToDictionary(x => x, x => 0f); + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { string text = pawn.kindDef.race.LabelCap.Resolve() ?? string.Empty; diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Record.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Record.cs index 192c5a8..5f8f698 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Record.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Record.cs @@ -6,6 +6,8 @@ public class PawnColumnWorker_Record : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { RecordDef recordDef = def.Ext().record; diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Skill.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Skill.cs index da9abc6..a1b0819 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Skill.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Skill.cs @@ -5,15 +5,10 @@ using UnityEngine; using Verse; - [StaticConstructorOnStartup] //mostly from Koisama public class PawnColumnWorker_Skill : PawnColumnWorker { - private static readonly Texture2D passionMinorIcon = ContentFinder.Get("UI/Icons/PassionMinor"); - private static readonly Texture2D passionMajorIcon = ContentFinder.Get("UI/Icons/PassionMajor"); - private static readonly Texture2D SkillBarFillTex = SolidColorMaterials.NewSolidColorTexture(new Color(1f, 1f, 1f, 0.25f)); - private static readonly Texture2D SkillBarBgTex = SolidColorMaterials.NewSolidColorTexture(new Color(1f, 1f, 1f, 0.07f)); private static readonly Color DisabledSkillColor = new(1f, 1f, 1f, 0.5f); private static readonly MethodInfo mGetSkillDescription = typeof(SkillUI).GetMethod("GetSkillDescription", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod, null, [typeof(SkillRecord)], null); @@ -34,13 +29,13 @@ public override void DoCell(Rect rect, Pawn pawn, PawnTable table) Rect position = new(3f, 3f, 24f, 24f); if (skill.passion > Passion.None) { - Texture2D image = (skill.passion != Passion.Major) ? passionMinorIcon : passionMajorIcon; + Texture2D image = (skill.passion != Passion.Major) ? StaticConstructorOnGameStart.PassionMinorIcon : StaticConstructorOnGameStart.PassionMajorIcon; GUI.DrawTexture(position, image); } if (!skill.TotallyDisabled) { Rect rect3 = new(position.xMax, 0f, rect.width - position.xMax, rect.height); - Widgets.FillableBar(rect3, skill.Level / 20f, SkillBarFillTex, SkillBarBgTex, false); + Widgets.FillableBar(rect3, skill.Level / 20f, StaticConstructorOnGameStart.SkillBarFillTex, StaticConstructorOnGameStart.SkillBarBgTex, false); } Rect rect4 = new(position.xMax + 4f, 0f, 999f, rect.height); rect4.yMin += 3f; diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Stat.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Stat.cs index 36cd51e..c28fbb6 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Stat.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Stat.cs @@ -9,6 +9,8 @@ public class PawnColumnWorker_Stat : PawnColumnWorker_Text public const int minWidthBasedOnNarrowestColumnThatColumnBeingMass = 69; public const int maxWidthBasedOnColumnsWithALongAssNameLikeThisInt = 150; public const int margin = 5; + + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; protected override string GetTextFor(Pawn pawn) { diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_TameChance.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_TameChance.cs index ef681bc..ad6a3db 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_TameChance.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_TameChance.cs @@ -3,9 +3,12 @@ using System; using RimWorld; using Verse; + using UnityEngine; public class PawnColumnWorker_TameChance : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + public override int Compare(Pawn a, Pawn b) => GetValue(a).CompareTo(GetValue(b)); protected override string GetTextFor(Pawn pawn) => pawn.AnimalOrWildMan() ? GetValue(pawn).ToStringPercent() : string.Empty; diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Trait.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Trait.cs index 50e5464..ad3fb38 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Trait.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Trait.cs @@ -1,14 +1,24 @@ -namespace Numbers -{ - using System.Linq; - using RimWorld; - using Verse; +using System.Linq; +using RimWorld; +using UnityEngine; +using Verse; +namespace Numbers +{ public class PawnColumnWorker_Trait : PawnColumnWorker_Text { + private readonly bool _traitRarityColorsModIsActive = ModsConfig.IsActive("carnysenpai.traitraritycolors"); + + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) { - return pawn.story?.traits?.allTraits.Select(x => x.Label).ToCommaList(); + return pawn.story?.traits?.allTraits.Select(GetLabel).ToCommaList(); + } + + private string GetLabel(Trait trait) + { + return _traitRarityColorsModIsActive ? trait.CurrentData.label.CapitalizeFirst() : trait.Label; } } -} +} \ No newline at end of file diff --git a/Numbers/PawnColumnWorkers/PawnColumnWorker_Will.cs b/Numbers/PawnColumnWorkers/PawnColumnWorker_Will.cs index e8aa89b..9323821 100644 --- a/Numbers/PawnColumnWorkers/PawnColumnWorker_Will.cs +++ b/Numbers/PawnColumnWorkers/PawnColumnWorker_Will.cs @@ -1,10 +1,13 @@ using RimWorld; using Verse; +using UnityEngine; namespace Numbers { public class PawnColumnWorker_Will : PawnColumnWorker_Text { + protected override TextAnchor Anchor => TextAnchor.MiddleCenter; + protected override string GetTextFor(Pawn pawn) => pawn.guest.will.ToString("F1"); diff --git a/Numbers/StaticConstructorOnGameStart.cs b/Numbers/StaticConstructorOnGameStart.cs index d2be6f7..fc88ce3 100644 --- a/Numbers/StaticConstructorOnGameStart.cs +++ b/Numbers/StaticConstructorOnGameStart.cs @@ -24,7 +24,12 @@ static class StaticConstructorOnGameStart SortingDescendingIcon = ContentFinder.Get("UI/Icons/SortingDescending"), BarInstantMarkerTex = ContentFinder.Get("UI/Misc/BarInstantMarker"), Drop = ContentFinder.Get("UI/Buttons/Drop"), - UnwaveringlyLoyal = ContentFinder.Get("UI/Icons/UnwaveringlyLoyal"); + UnwaveringlyLoyal = ContentFinder.Get("UI/Icons/UnwaveringlyLoyal"), + PassionMinorIcon = ContentFinder.Get("UI/Icons/PassionMinor"), + PassionMajorIcon = ContentFinder.Get("UI/Icons/PassionMajor"), + SkillBarFillTex = SolidColorMaterials.NewSolidColorTexture(new Color(1f, 1f, 1f, 0.25f)), + SkillBarBgTex = SolidColorMaterials.NewSolidColorTexture(new Color(1f, 1f, 1f, 0.07f)), + EntropyBarTex = SolidColorMaterials.NewSolidColorTexture(new Color(0.46f, 0.34f, 0.35f)); public static List combatPreset = [], workTabPlusPreset = [],