Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion Languages/ChineseSimplified/Keyed/Keys.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,9 @@
<Numbers_LoadSavedLayout>载入布局存档</Numbers_LoadSavedLayout>
<Numbers_NothingSaved>没有布局存档</Numbers_NothingSaved>
<Numbers_SaveCurrentLayout>保存当前布局</Numbers_SaveCurrentLayout>


<Predator>捕食者</Predator>
<Pregnant>怀孕</Pregnant>
<Gender>性别</Gender>

</LanguageData>
10 changes: 10 additions & 0 deletions Numbers/MainTabWindow_Numbers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion Numbers/Numbers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ private static void Columndefs()
}
var pred = DefDatabase<PawnColumnDef>.GetNamed("Predator");
pred.sortable = true;
pred.headerTip = "Predator";
pred.headerTip = "Predator".Translate();
}

private static bool RightClickToRemoveHeader(PawnColumnWorker __instance, Rect headerRect, PawnTable table)
Expand Down
32 changes: 23 additions & 9 deletions Numbers/OptionsMaker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,14 @@ public List<FloatMenuOption> 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<FloatMenuOption> General()
{
yield return new FloatMenuOption("Race".Translate(), () => AddPawnColumnAtBestPositionAndRefresh(DefDatabase<PawnColumnDef>.GetNamedSilentFail("Numbers_Race")));
yield return new FloatMenuOption("Faction".Translate(), () => AddPawnColumnAtBestPositionAndRefresh(DefDatabase<PawnColumnDef>.GetNamedSilentFail("Numbers_Faction")));
yield return new FloatMenuOption("Gender", () => AddPawnColumnAtBestPositionAndRefresh(DefDatabase<PawnColumnDef>.GetNamedSilentFail("Gender")));
yield return new FloatMenuOption("Gender".Translate(), () => AddPawnColumnAtBestPositionAndRefresh(DefDatabase<PawnColumnDef>.GetNamedSilentFail("Gender")));
}

public List<FloatMenuOption> FloatMenuOptionsFor(IEnumerable<PawnColumnDef> pcdList)
Expand Down Expand Up @@ -121,7 +121,6 @@ public List<FloatMenuOption> OtherOptionsMaker()

if (PawnTable == NumbersDefOf.Numbers_WildAnimals)
{
list.RemoveAll(x => x.Label == "Gender"); //duplicate
list.AddRange(FloatMenuOptionsFor(PawnColumnOptionDefOf.WildAnimals.options
.Concat(DefDatabase<PawnTableDef>.GetNamed("Wildlife").columns)
.Where(x => pcdValidator(x))));
Expand All @@ -133,7 +132,9 @@ public List<FloatMenuOption> 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<FloatMenuOption> OptionsMakerForGenericDef<T>(IEnumerable<T> listOfDefs) where T : Def
Expand All @@ -151,7 +152,7 @@ void Action()
list.Add(new FloatMenuOption(label, Action));
}

return list;
return list.Distinct(new FloatMenuOptionComparer()).ToList();
}

public List<FloatMenuOption> PawnSelector()
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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<FloatMenuOption>
{
public bool Equals(FloatMenuOption x, FloatMenuOption y)
{
return x?.Label == y?.Label;
}

public int GetHashCode(FloatMenuOption obj)
{
return obj.Label.GetHashCode();
}
}
}
}
4 changes: 4 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_Age.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand Down
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
3 changes: 3 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalFilthRate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
3 changes: 3 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_AnimalWildness.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
3 changes: 3 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_Backstory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
2 changes: 2 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_Bleedrate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
2 changes: 2 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_Capacity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
5 changes: 1 addition & 4 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_Entropy.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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;
}
Expand Down
2 changes: 2 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_Faction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

class PawnColumnWorker_Faction : PawnColumnWorker_Text
{
protected override TextAnchor Anchor => TextAnchor.MiddleCenter;

protected override string GetTextFor(Pawn pawn)
=> pawn.Faction?.Name;

Expand Down
3 changes: 3 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_FoodConsumption.cs
Original file line number Diff line number Diff line change
@@ -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.##");

Expand Down
3 changes: 3 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_Genes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
3 changes: 3 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_GenesRegrowTime.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 2 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_Inspiration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
2 changes: 2 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_JobCurrent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_JobQueued.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_LeatherType.cs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
2 changes: 2 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_Meditation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 2 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_MentalState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
2 changes: 2 additions & 0 deletions Numbers/PawnColumnWorkers/PawnColumnWorker_Pain.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
Loading