private void PreDrawPawnRow(Rect rect, ThingWithComps p) { Rect rect2 = new Rect(0f, rect.y, rect.width, PawnRowHeight); if (Mouse.IsOver(rect2)) { GUI.DrawTexture(rect2, TexUI.HighlightTex); } Rect rect3 = new Rect(0f, rect.y, 175f, PawnRowHeight); Rect position = rect3.ContractedBy(3f); if (p is Pawn) { if ((p as Pawn).health.summaryHealth.SummaryHealthPercent < 0.999f) { Rect rect4 = new Rect(rect3); rect4.xMin -= 4f; rect4.yMin += 4f; rect4.yMax -= 6f; Widgets.FillableBar(rect4, (p as Pawn).health.summaryHealth.SummaryHealthPercent, GenMapUI.OverlayHealthTex, BaseContent.ClearTex, false); } } if (Mouse.IsOver(rect3)) { GUI.DrawTexture(position, TexUI.HighlightTex); } string label; Pawn p1 = (p is Corpse) ? (p as Corpse).InnerPawn : p as Pawn; if (!p1.RaceProps.Humanlike && p1.Name != null && !p1.Name.Numerical) { label = p1.Name.ToStringShort.CapitalizeFirst() + ", " + p1.KindLabel; } else { label = p1.LabelCap; } Text.Font = GameFont.Small; Text.Anchor = TextAnchor.MiddleLeft; Text.WordWrap = false; Rect rect5 = new Rect(rect3); rect5.xMin += 15f; Widgets.Label(rect5, label); Text.WordWrap = true; if (Widgets.ButtonInvisible(rect3)) { //shift-selection: keep tab, don't deselect, don't move camera if (Event.current.shift) { //do nothing } //alt-selection: deselect, remove tab else if (Event.current.alt) { Find.MainTabsRoot.EscapeCurrentTab(true); Find.Selector.ClearSelection(); } //normal selection: remove tab, deselect, move camera else { Find.MainTabsRoot.EscapeCurrentTab(true); Find.Selector.ClearSelection(); Find.CameraDriver.JumpTo(p.PositionHeld); } //finally select if pawn is present if (p.Spawned) { Find.Selector.Select(p, true, true); } return; } TipSignal tooltip = p.GetTooltip(); tooltip.text = "ClickToJumpTo".Translate() + "\n\n" + tooltip.text; TooltipHandler.TipRegion(rect3, tooltip); }
private void PreDrawPawnRow(Rect rect, ThingWithComps p) { Rect rect2 = new Rect(0f, rect.y, rect.width, PawnRowHeight); if (Mouse.IsOver(rect2)) { GUI.DrawTexture(rect2, TexUI.HighlightTex); } Rect rect3 = new Rect(0f, rect.y, 175f, PawnRowHeight); Rect position = rect3.ContractedBy(3f); if (p is Pawn) { if ((p as Pawn).health.summaryHealth.SummaryHealthPercent < 0.999f) { Rect rect4 = new Rect(rect3); rect4.xMin -= 4f; rect4.yMin += 4f; rect4.yMax -= 6f; Widgets.FillableBar(rect4, (p as Pawn).health.summaryHealth.SummaryHealthPercent, GenWorldUI.OverlayHealthTex, BaseContent.ClearTex, false); } } if (Mouse.IsOver(rect3)) { GUI.DrawTexture(position, TexUI.HighlightTex); } string label; Pawn p1 = (p is Corpse) ? (p as Corpse).innerPawn : p as Pawn; if (!p1.RaceProps.Humanlike && p1.Name != null && !p1.Name.Numerical) { label = p1.Name.ToStringShort.CapitalizeFirst() + ", " + p1.KindLabel; } else { label = p1.LabelCap; } Text.Font = GameFont.Small; Text.Anchor = TextAnchor.MiddleLeft; Text.WordWrap = false; Rect rect5 = new Rect(rect3); rect5.xMin += 15f; Widgets.Label(rect5, label); Text.WordWrap = true; if (Widgets.ButtonInvisible(rect3)) { Find.MainTabsRoot.EscapeCurrentTab(true); Find.CameraDriver.JumpTo(p.PositionHeld); Find.Selector.ClearSelection(); if (p.Spawned) { Find.Selector.Select(p, true, true); } return; } TipSignal tooltip = p.GetTooltip(); tooltip.text = "ClickToJumpTo".Translate() + "\n\n" + tooltip.text; TooltipHandler.TipRegion(rect3, tooltip); }