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 = [],