diff --git a/Languages/English/Keyed/Keyed-English.xml b/Languages/English/Keyed/Keyed-English.xml
index 1d18a97..42e612b 100644
--- a/Languages/English/Keyed/Keyed-English.xml
+++ b/Languages/English/Keyed/Keyed-English.xml
@@ -27,6 +27,8 @@
Play a crunchy sound when a pawn is assigned to a job they are not skilled at?
Disable Scrollwheel
Disable the scrollwheel functions (when hovering over skills)
+ Highlight Active Work Cells
+ Highlight the grid squares in the work tab when the pawn is actually working that job right now.
Vertical labels
Display work labels vertically
Fix vertical fonts
diff --git a/Source/Core/Settings.cs b/Source/Core/Settings.cs
index f0cb3cc..44855dc 100644
--- a/Source/Core/Settings.cs
+++ b/Source/Core/Settings.cs
@@ -13,6 +13,7 @@ public class Settings: ModSettings {
public static bool playSounds = true;
public static bool TwentyFourHourMode = true;
public static bool verticalLabels = true;
+ public static bool highlightActiveWorkCells;
private static string _defaultPriorityBuffer = defaultPriority.ToString();
// public static bool sharedFavourites = true;
@@ -51,6 +52,8 @@ public static void DoWindowContents(Rect rect) {
"WorkTab.PlayCrunchTip".Translate());
options.CheckboxLabeled("WorkTab.DisableScrollwheel".Translate(), ref disableScrollwheel,
"WorkTab.DisableScrollwheelTip".Translate());
+ options.CheckboxLabeled("WorkTab.HighlightActiveWorkCells".Translate(), ref highlightActiveWorkCells,
+ "WorkTab.HighlightActiveWorkCellsTip".Translate());
bool verticalLabelsBuffer = verticalLabels;
options.CheckboxLabeled("WorkTab.VerticalLabels".Translate(), ref verticalLabelsBuffer,
"WorkTab.VerticalLabelsTip".Translate());
@@ -87,6 +90,7 @@ public override void ExposeData() {
Scribe_Values.Look(ref playCrunch, "PlayCrunch", true);
Scribe_Values.Look(ref disableScrollwheel, "DisableScrollwheel");
Scribe_Values.Look(ref verticalLabels, "VerticalLabels", true);
+ Scribe_Values.Look(ref highlightActiveWorkCells, "HighlightActiveWorkCells");
Scribe_Values.Look(ref _fontFix, "FontFix", true);
// apply font-fix on load
diff --git a/Source/PawnColumns/PawnColumnWorker_WorkGiver.cs b/Source/PawnColumns/PawnColumnWorker_WorkGiver.cs
index f8dd1c1..6b0b9f6 100644
--- a/Source/PawnColumns/PawnColumnWorker_WorkGiver.cs
+++ b/Source/PawnColumns/PawnColumnWorker_WorkGiver.cs
@@ -57,6 +57,16 @@ public override void DoCell(Rect rect, Pawn pawn, PawnTable table) {
WorkGiverDef workgiver = WorkGiver;
+ if (Settings.highlightActiveWorkCells)
+ {
+ bool doingNow = (pawn.CurJob?.workGiverDef?.defName == workgiver?.defName);
+ if (doingNow)
+ {
+ GUI.color = Color.white;
+ GUI.DrawTexture(rect.ContractedBy(-2f), DrawUtilities.getActiveHighlightBox());
+ }
+ }
+
// create rect in centre of cell, slightly offsetting left to give the appearance of aligning to worktype.
Vector2 pos = rect.center - (new Vector2( WorkGiverBoxSize, WorkGiverBoxSize ) / 2f);
Rect box = new Rect( pos.x - 2f, pos.y, WorkGiverBoxSize, WorkGiverBoxSize );
diff --git a/Source/PawnColumns/PawnColumnWorker_WorkType.cs b/Source/PawnColumns/PawnColumnWorker_WorkType.cs
index d1d2524..3356ba1 100644
--- a/Source/PawnColumns/PawnColumnWorker_WorkType.cs
+++ b/Source/PawnColumns/PawnColumnWorker_WorkType.cs
@@ -82,6 +82,16 @@ public override void DoCell(Rect rect, Pawn pawn, PawnTable table) {
bool incapable = IncapableOfWholeWorkType( pawn );
WorkTypeDef worktype = def.workType;
+ if (Settings.highlightActiveWorkCells)
+ {
+ bool doingNow = (pawn.CurJob?.workGiverDef?.workType?.defName == worktype?.defName);
+ if (doingNow)
+ {
+ GUI.color = Color.white;
+ GUI.DrawTexture(rect.ContractedBy(-2f), DrawUtilities.getActiveHighlightBox());
+ }
+ }
+
// create rect in centre of cell
Vector2 pos = rect.center - (new Vector2( WorkTypeBoxSize, WorkTypeBoxSize ) / 2f);
Rect box = new Rect( pos.x, pos.y, WorkTypeBoxSize, WorkTypeBoxSize );
diff --git a/Source/Utilities/DrawUtilities.cs b/Source/Utilities/DrawUtilities.cs
index 6cd3d2b..7ae1e30 100644
--- a/Source/Utilities/DrawUtilities.cs
+++ b/Source/Utilities/DrawUtilities.cs
@@ -70,6 +70,25 @@ public static void DrawWorkBoxBackground(Rect box, Pawn pawn, WorkTypeDef workty
_drawWorkBoxBackgroundMethodInfo.Invoke(null, new object[] { box, pawn, worktype });
}
+ private static Texture2D activeHighlightBox;
+ public static Texture2D getActiveHighlightBox()
+ {
+ if (activeHighlightBox != null)
+ {
+ return activeHighlightBox;
+ }
+ Color color = Color.magenta;
+ Texture2D startingExample = WidgetsWork.WorkBoxOverlay_PreceptWarning;
+ int width = startingExample.width;
+ int height = startingExample.height;
+ Texture2D texture = new Texture2D(width, height);
+ Color[] pixels = Enumerable.Repeat(color, width * height).ToArray();
+ texture.SetPixels(pixels);
+ texture.Apply();
+ activeHighlightBox = texture;
+ return activeHighlightBox;
+ }
+
public static string PriorityLabel(int priority) {
/**
* 9 8 7 6 5 4