public override void DrawGUIOverlay() { if (!Medical && Find.CameraDriver.CurrentZoom == CameraZoomRange.Closest && PlayerCanSeeOwners) { Color defaultThingLabelColor = GenMapUI.DefaultThingLabelColor; if (!owners.Any()) { GenMapUI.DrawThingLabel(this, "Unowned".Translate(), defaultThingLabelColor); } else if (owners.Count == 1) { if (!owners[0].InBed() || owners[0].CurrentBed() != this) { GenMapUI.DrawThingLabel(this, owners[0].LabelShort, defaultThingLabelColor); } } else { for (int i = 0; i < owners.Count; i++) { if (!owners[i].InBed() || owners[i].CurrentBed() != this || !(owners[i].Position == GetSleepingSlotPos(i))) { Vector3 multiOwnersLabelScreenPosFor = GetMultiOwnersLabelScreenPosFor(i); GenMapUI.DrawThingLabel(multiOwnersLabelScreenPosFor, owners[i].LabelShort, defaultThingLabelColor); } } } } }
public override void DrawGUIOverlay() { base.DrawGUIOverlay(); if (this.DrawStatus && Find.CameraDriver.CurrentZoom < CameraZoomRange.Middle) { string label = ""; // only show overlay status text if has power: if (this.Active) { if (currentBillReport != null) // the assembler is actively working { // set the status text to the bill's label: label = currentBillReport.bill.LabelCap; } else // the assembler is NOT working { // show why it is not working: if (this.BillStack.AnyShouldDoNow) // it DOES have bills { label = "SearchingForIngredients".Translate(); } else // it DOESN'T have bills: { label = "AssemblerNoBills".Translate(); } } // draw the label on the screen: } else if (compFlick?.SwitchIsOn == false) { label = "SwitchedOff".Translate(); } GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(this, 0f), label, Color.white); } }
public override void DrawGUIOverlay() { if (this.Medical) { return; } if (Find.CameraDriver.CurrentZoom == CameraZoomRange.Closest && this.PlayerCanSeeOwners) { Color defaultThingLabelColor = GenMapUI.DefaultThingLabelColor; if (!this.owners.Any <Pawn>()) { GenMapUI.DrawThingLabel(this, "Unowned".Translate(), defaultThingLabelColor); } else if (this.owners.Count == 1) { if (this.owners[0].InBed() && this.owners[0].CurrentBed() == this) { return; } GenMapUI.DrawThingLabel(this, this.owners[0].NameStringShort, defaultThingLabelColor); } else { for (int i = 0; i < this.owners.Count; i++) { if (!this.owners[i].InBed() || this.owners[i].CurrentBed() != this || !(this.owners[i].Position == this.GetSleepingSlotPos(i))) { Vector3 multiOwnersLabelScreenPosFor = this.GetMultiOwnersLabelScreenPosFor(i); GenMapUI.DrawThingLabel(multiOwnersLabelScreenPosFor, this.owners[i].NameStringShort, defaultThingLabelColor); } } } } }
public override void DrawMouseAttachments() { var intVec = UI.MouseCell(); float totalFertility = 0; foreach (var cell in GenRadial.RadialCellsAround(intVec, 5.8f, false)) { if (!cell.InBounds(Map)) { continue; } if (Map.fogGrid.IsFogged(cell)) { continue; } var fertility = CalculateFertilityAt(cell); if (fertility >= 0.4) { Vector3 v = GenMapUI.LabelDrawPosFor(cell); GenMapUI.DrawThingLabel(v, fertility.ToString(), FertilityColor(fertility)); } totalFertility += fertility; } var avgFertility = totalFertility / (GenRadial.NumCellsInRadius(5.8f) - 1); Text.Font = GameFont.Medium; Rect rect = new Rect(Event.current.mousePosition.x + 19f, Event.current.mousePosition.y + 19f, 100f, 100f); GUI.color = FertilityColor(avgFertility); Widgets.Label(rect, avgFertility.ToString("F3")); GUI.color = Color.white; GenUI.DrawMouseAttachment(null, string.Empty); }
public override void DrawGUIOverlay() { if (Medical || Find.CameraDriver.CurrentZoom != 0 || !PlayerCanSeeOwners) { return; } Color defaultThingLabelColor = GenMapUI.DefaultThingLabelColor; if (!OwnersForReading.Any()) { GenMapUI.DrawThingLabel(this, "Unowned".Translate(), defaultThingLabelColor); return; } if (OwnersForReading.Count == 1) { if (!OwnersForReading[0].InBed() || OwnersForReading[0].CurrentBed() != this) { GenMapUI.DrawThingLabel(this, OwnersForReading[0].LabelShort, defaultThingLabelColor); } return; } for (int i = 0; i < OwnersForReading.Count; i++) { if (!OwnersForReading[i].InBed() || OwnersForReading[i].CurrentBed() != this || !(OwnersForReading[i].Position == GetSleepingSlotPos(i))) { GenMapUI.DrawThingLabel(GetMultiOwnersLabelScreenPosFor(i), OwnersForReading[i].LabelShort, defaultThingLabelColor); } } }
//Draw infusion label on map public override void MapComponentOnGUI() { if (Find.CameraDriver.CurrentZoom != CameraZoomRange.Closest) { return; } if (InfusionLabelManager.Drawee.Count == 0) { return; } foreach (var current in InfusionLabelManager.Drawee) { if (current.parent.Map != map) { continue; } // skip fogged if (map.fogGrid.IsFogged(current.parent.Position)) { continue; } GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(current.parent, -0.66f), current.InfusedLabel, current.InfusedLabelColor); } }
public override void DrawGUIOverlay() { if (Find.CameraDriver.CurrentZoom == CameraZoomRange.Closest) { Color defaultThingLabelColor = GenMapUI.DefaultThingLabelColor; var owners = this.Owners(); if (!owners.Any()) { GenMapUI.DrawThingLabel(this, rentalFee + silverLabel, defaultThingLabelColor); } else if (owners.Count == 1) { if (owners[0].InBed() && owners[0].CurrentBed() == this) { return; } GenMapUI.DrawThingLabel(this, owners[0].LabelShort, defaultThingLabelColor); } else { for (int index = 0; index < owners.Count; ++index) { if (!owners[index].InBed() || owners[index].CurrentBed() != this || !(owners[index].Position == GetSleepingSlotPos(index))) { var pos = Traverse.Create(this).Method("GetMultiOwnersLabelScreenPosFor", index).GetValue <Vector3>(); GenMapUI.DrawThingLabel(pos, owners[index].LabelShort, defaultThingLabelColor); } } } } }
public override void DrawGUIOverlay() { if (DisplayEnabled) { var text = GenText.ToStringTemperature(lastDetectedTemperature); Text.Font = GameFont.Tiny; float halfHeight = Text.CalcSize(text).y * 0.25f; var ranges = Modes[TemperatureMode]; var normal = RangeLerp(lastDetectedTemperature, ranges.Item1, ranges.Item2); var position = DrawPos.MapToUIPosition(); position.y -= halfHeight; if (!isBlocked) { var labelColor = Color.Lerp(ColdColour, HotColour, normal); labelColor.r += 0.5f; // Brighten labelColor.g += 0.5f; // Brighten labelColor.b += 0.5f; // Brighten GenMapUI.DrawThingLabel(position, text, labelColor); } else { GenMapUI.DrawThingLabel(position, "Blocked!", Color.white); } } }
public override void DrawGUIOverlay() { base.DrawGUIOverlay(); if (Find.CameraDriver.CurrentZoom < CameraZoomRange.Middle) { GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(this, 0f), batteryComp.StoredEnergy.ToString("F0"), Color.white); } }
public override void DrawGUIOverlay() { base.DrawGUIOverlay(); if (Find.CameraDriver.CurrentZoom < CameraZoomRange.Middle) { GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(this, 0f), thingToGenerate?.LabelCap ?? "AssemblerIdle".Translate(), Color.white); } }
/// <summary> /// label绘制 /// </summary> public override void DrawGUIOverlay() { if (occupant != null) { Color defaultThingLabelColor = Color.yellow; GenMapUI.DrawThingLabel(this, "SR_Bound".Translate(), defaultThingLabelColor); } }
public override void DrawGUIOverlay() { base.DrawGUIOverlay(); if (Find.CameraDriver.CurrentZoom < CameraZoomRange.Middle) { GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(this, 0f), currentBillReport == null ? "AssemblerIdle".Translate() : currentBillReport.bill.LabelCap, Color.white); } }
public override void DrawGUIOverlay() { base.DrawGUIOverlay(); if (Current.CameraDriver.CurrentZoom <= CameraZoomRange.Close) { GenMapUI.DrawThingLabel(this, LabelCap + "\n\r" + GetUIThingLabel()); } }
public override void DrawGUIOverlay() { base.DrawGUIOverlay(); if (this.DrawStatus && Find.CameraDriver.CurrentZoom < CameraZoomRange.Middle) { string label = ""; string label2 = ""; // only show overlay status text if has power: if (this.Active) { if (currentBillReport != null) // the assembler is actively working { // set the status text to the bill's label: label = currentBillReport.bill.LabelCap; } else // the assembler is NOT working { // show why it is not working: if (this.BillStack.AnyShouldDoNow) // it DOES have bills { label = "SearchingForIngredients".Translate(); } else // it DOESN'T have bills: { label = "AssemblerNoBills".Translate(); } } // draw the label on the screen: } else if (compFlick?.SwitchIsOn == false) { label = "SwitchedOff".Translate(); } if (!AllowProduction_thingQueue) { label2 = "PRF_OutputBufferWarning".Translate(); } else if (thingQueue.Count > 1) { label2 = "SAL3_Products".Translate(thingQueue.Count, max_thingQueue_Count); } Vector2 vectorpos = GenMapUI.LabelDrawPosFor(this, 0f); //Don't show an Empty Line if (label != "") { GenMapUI.DrawThingLabel(vectorpos, label, Color.white); } vectorpos.y += Verse.Text.CalcSize(label).y; //Don't show an Empty Line if (label2 != "") { GenMapUI.DrawThingLabel(vectorpos, label2, Color.yellow); } } }
public override void DrawGUIOverlay() { if (Find.CameraDriver.CurrentZoom != CameraZoomRange.Closest) { return; } if (!markerName.Trim().Equals("")) { GenMapUI.DrawThingLabel(this, markerName, new Color(1f, 1f, 1f, 0.75f)); } }
public override void DrawGUIOverlay() { if (Find.CameraDriver.CurrentZoom != CameraZoomRange.Closest) { return; } if (!IsActive) { return; } GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(parent, -0.66f), InfusedLabelAbbr, InfusedLabelColor); }
public void OnGUI() { if (toDrawLabels != null) { var list = toDrawLabels; foreach (Thing t in list) { int pri = MainMod.Data.GetPriority(t); GenMapUI.DrawThingLabel(t, pri.ToString(), pri.GetPriorityColor()); } } }
public override void DrawGUIOverlay() { if (Find.CameraDriver.CurrentZoom == CameraZoomRange.Closest && this.PlayerCanSeeOwners) { Color defaultThingLabelColor = GenMapUI.DefaultThingLabelColor; if (!this.owners.Any <Pawn>()) { GenMapUI.DrawThingLabel(this, "Unowned".Translate(), defaultThingLabelColor); } else if (this.owners.Count == 1) { GenMapUI.DrawThingLabel(this, this.owners[0].NameStringShort, defaultThingLabelColor); } } }
public override void DrawGUIOverlay() { base.DrawGUIOverlay(); if (this.State != WorkingState.Ready && Find.CameraDriver.CurrentZoom == CameraZoomRange.Closest) { var p = CarryPosition(); if (!this.ToUnderground || this.WorkLeft > 0.7f) { Vector2 result = Find.Camera.WorldToScreenPoint(p + new Vector3(0, 0, -0.4f)) / Prefs.UIScale; result.y = (float)UI.screenHeight - result.y; GenMapUI.DrawThingLabel(result, this.CarryingThing().stackCount.ToStringCached(), GenMapUI.DefaultThingLabelColor); } } }
public override void DrawGUIOverlay() { if (Props.drawAssignmentOverlay && (Props.drawUnownedAssignmentOverlay || assignedPawns.Any()) && Find.CameraDriver.CurrentZoom == CameraZoomRange.Closest && PlayerCanSeeAssignments) { Color defaultThingLabelColor = GenMapUI.DefaultThingLabelColor; if (!assignedPawns.Any()) { GenMapUI.DrawThingLabel(parent, "Unowned".Translate(), defaultThingLabelColor); } if (assignedPawns.Count == 1 && CanDrawOverlayForPawn(assignedPawns[0])) { GenMapUI.DrawThingLabel(parent, assignedPawns[0].LabelShort, defaultThingLabelColor); } } }
public override void DrawGUIOverlay() { if (Props.drawAssignmentOverlay && (Props.drawUnownedAssignmentOverlay || assignedStation != null) && Find.CameraDriver.CurrentZoom == CameraZoomRange.Closest && PlayerCanSeeAssignments) { Color defaultThingLabelColor = GenMapUI.DefaultThingLabelColor; if (assignedStation == null) { GenMapUI.DrawThingLabel(parent, "Unowned".Translate(), defaultThingLabelColor); } if (assignedStation != null && CanDrawOverlayForStation(assignedStation)) { GenMapUI.DrawThingLabel(parent, assignedStation.LabelShort, defaultThingLabelColor); } } }
static void Postfix(Thing __instance) { if (!OutfittedMod.showApparelScores) { return; } if (Find.CameraDriver.CurrentZoom != CameraZoomRange.Closest) { return; } var pawn = Find.Selector.SingleSelectedThing as Pawn; if (pawn == null || !pawn.IsColonistPlayerControlled) { return; } var apparel = __instance as Apparel; if (apparel == null) { return; } var outfit = pawn.outfits.CurrentOutfit as ExtendedOutfit; if (outfit == null) { return; } if (!outfit.filter.Allows(apparel)) { return; } var scores = CachedScoresForPawn(pawn); float score = JobGiver_OptimizeApparel.ApparelScoreGain_NewTmp(pawn, apparel, scores); if (Math.Abs(score) > 0.01f) { var pos = GenMapUI.LabelDrawPosFor(apparel, 0f); GenMapUI.DrawThingLabel(pos, score.ToString("F1"), BeautyDrawer.BeautyColor(score, 3f)); } }
public static void DebugDrawAttackTargetScores_OnGUI() { IAttackTargetSearcher attackTargetSearcher = Find.Selector.SingleSelectedThing as IAttackTargetSearcher; if (attackTargetSearcher == null) { return; } if (attackTargetSearcher.Thing.Map != Find.CurrentMap) { return; } Verb currentEffectiveVerb = attackTargetSearcher.CurrentEffectiveVerb; if (currentEffectiveVerb == null) { return; } List <Thing> list = attackTargetSearcher.Thing.Map.listerThings.ThingsInGroup(ThingRequestGroup.AttackTarget); Text.Anchor = TextAnchor.MiddleCenter; Text.Font = GameFont.Tiny; for (int i = 0; i < list.Count; i++) { Thing thing = list[i]; if (thing != attackTargetSearcher) { string text; Color red; if (!AttackTargetFinder.CanShootAtFromCurrentPosition((IAttackTarget)thing, attackTargetSearcher, currentEffectiveVerb)) { text = "out of range"; red = Color.red; } else { text = AttackTargetFinder.GetShootingTargetScore((IAttackTarget)thing, attackTargetSearcher, currentEffectiveVerb).ToString("F0"); red = new Color(0.25f, 1f, 0.25f); } Vector2 screenPos = thing.DrawPos.MapToUIPosition(); GenMapUI.DrawThingLabel(screenPos, text, red); } } Text.Anchor = TextAnchor.UpperLeft; Text.Font = GameFont.Small; }
private static void DrawFertilityAroundMouse() { if (!PlaySettingsPatch.showFertilityOverlay) { return; } FertilityUtility.FillFertilityRelevantCells(UI.MouseCell(), Find.CurrentMap); for (int i = 0; i < FertilityUtility.fertilityRelevantCells.Count; i++) { IntVec3 intVec = FertilityUtility.fertilityRelevantCells[i]; float num = FertilityUtility.CellFertility(intVec, Find.CurrentMap, FertilityDrawer.fertilityCountedThings); if (num != 0f) { Vector3 v = GenMapUI.LabelDrawPosFor(intVec); GenMapUI.DrawThingLabel(v, num.ToString("n1"), FertilityDrawer.FertilityColor(num, 1.4f)); } } FertilityDrawer.fertilityCountedThings.Clear(); }
private static void Postfix(Thing __instance) { if (!OutfitManagerMod.ShowApparelScores) { return; } if (Find.CameraDriver.CurrentZoom != CameraZoomRange.Closest) { return; } if (!(Find.Selector.SingleSelectedThing is Pawn pawn) || !pawn.IsColonistPlayerControlled) { return; } if (!(__instance is Apparel apparel)) { return; } if (!(pawn.outfits.CurrentOutfit is ExtendedOutfit outfit)) { return; } if (!outfit.filter.Allows(apparel)) { return; } var wornApparelScores = pawn.apparel.WornApparel .Select(wornApparel => OutfitManagerMod.ApparelScoreRaw(pawn, wornApparel)).ToList(); var score = JobGiver_OptimizeApparel.ApparelScoreGain_NewTmp(pawn, apparel, wornApparelScores); if (!(Math.Abs(score) > 0.01f)) { return; } var pos = GenMapUI.LabelDrawPosFor(apparel, 0f); GenMapUI.DrawThingLabel(pos, score.ToString("F1", CultureInfo.InvariantCulture), BeautyDrawer.BeautyColor(score, 3f)); }
private static void DrawFertilityAroundMouse() { if (!Find.PlaySettings.showFertilityOverlay) { return; } // Prevent overlap with beauty display if (Find.PlaySettings.showBeauty) { return; } FertilityUtility.FillFertilityRelevantCells(UI.MouseCell(), Find.CurrentMap); foreach (var cell in FertilityUtility.fertilityRelevantCells) { float num = FertilityUtility.CellFertility(cell, Find.CurrentMap, FertilityDrawer.fertilityCountedThings); if (num != 0f) { Vector3 v = GenMapUI.LabelDrawPosFor(cell); GenMapUI.DrawThingLabel(v, num.ToString("n1"), FertilityDrawer.FertilityColor(num, 1.4f)); } } FertilityDrawer.fertilityCountedThings.Clear(); }
public override void DrawGUIOverlay() { if (this.CheatMod) { GenMapUI.DrawThingLabel(this, "Cheat Mode", Color.red); } else if (Find.CameraDriver.CurrentZoom == CameraZoomRange.Closest) { Color defaultThingLabelColor = GenMapUI.DefaultThingLabelColor; if (this.PodOwner == null) { GenMapUI.DrawThingLabel(this, "Unowned".Translate(), defaultThingLabelColor); } else if (this.JobState != PS_Conditioning_JobState.Waiting) { // Draw nothing because the progress bar will be there } else { GenMapUI.DrawThingLabel(this, this.PodOwner.LabelShort, defaultThingLabelColor); } } }
static bool Prefix(Thing __instance) { if (Find.CameraDriver.CurrentZoom != CameraZoomRange.Closest) { return(false); } Building_Storage DSU = __instance as Building_Storage; if (DSU == null) { return(true); } CompDeepStorage cds = DSU.GetComp <CompDeepStorage>(); if (cds == null) { return(true); } if (cds.cdsProps.overlayType == LWM.DeepStorage.GuiOverlayType.Normal) { return(true); } if (cds.cdsProps.overlayType == GuiOverlayType.None) { return(false); } List <Thing> things; String s; if (cds.cdsProps.overlayType == GuiOverlayType.CountOfAllStacks) { // probably Armor Racks, Clothing Racks, Weapon Lockers etc... things = new List <Thing>(); foreach (IntVec3 c in DSU.AllSlotCellsList()) { things.AddRange(__instance.Map.thingGrid.ThingsListAtFast(c).FindAll(t => t.def.EverStorable(false))); } if (things.Count == 0) { if (cds.cdsProps.showContents) { return(false); // If it's empty, player will see! } s = "LWM_DS_Empty".Translate(); } else if (things.Count == 1) { s = 1.ToStringCached(); // Why not s="1";? You never know, someone may be playing in... } else if (AllSameType(things)) { s = "x" + things.Count.ToStringCached(); } else { s = "[ " + things.Count.ToStringCached() + " ]"; } GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(__instance, 0f), s, GenMapUI.DefaultThingLabelColor); return(false); } if (cds.cdsProps.overlayType == GuiOverlayType.CountOfStacksPerCell) { // maybe Armor Racks, Clothing Racks? foreach (IntVec3 c in DSU.AllSlotCellsList()) { things = __instance.Map.thingGrid.ThingsListAtFast(c).FindAll(t => t.def.EverStorable(false)); if (things.Count == 0) { if (cds.cdsProps.showContents) { continue; // if it's empty, player will see! } s = "LWM_DS_Empty".Translate(); } else if (things.Count == 1) { s = 1.ToStringCached(); // ..a language that doesn't use arabic numerals? } else if (AllSameType(things)) { s = "x" + things.Count.ToStringCached(); } else { s = "[ " + things.Count.ToStringCached() + " ]"; } GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(c), s, GenMapUI.DefaultThingLabelColor); } return(false); } if (cds.cdsProps.overlayType == GuiOverlayType.SumOfAllItems) { // probably food baskets, skips, etc... things = new List <Thing>(); foreach (IntVec3 c in DSU.slotGroup.CellsList) { things.AddRange(__instance.Map.thingGrid.ThingsListAtFast(c) .FindAll(t => t.def.EverStorable(false))); } if (things.Count == 0) { if (cds.cdsProps.showContents) { return(false); // if it's empty, player will see } s = "LWM_DS_Empty".Translate(); } else { int count = things[0].stackCount; bool allTheSame = true; for (int i = 1; i < things.Count; i++) { if (things[i].def != things[0].def) { allTheSame = false; } count += things[i].stackCount; } if (allTheSame) { s = count.ToStringCached(); } else { s = "[ " + count.ToStringCached() + " ]"; } } GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(__instance, 0f), s, GenMapUI.DefaultThingLabelColor); return(false); } Log.Warning("LWM DeepStorage: could not find GuiOverlayType of " + cds.cdsProps.overlayType); return(true); }
private static bool Prefix(Thing __instance) { if (Find.CameraDriver.CurrentZoom != CameraZoomRange.Closest) { return(true); // maybe someone changes this? Who knows. } if (!(__instance is Building_Storage DSU)) { return(true); } var cds = DSU.GetComp <CompDeepStorage>(); if (cds == null) { return(true); } switch (cds.cdsProps.overlayType) { case GuiOverlayType.Normal: return(true); case GuiOverlayType.None: return(false); } List <Thing> things; string s; switch (cds.cdsProps.overlayType) { case GuiOverlayType.CountOfAllStacks: { // maybe Armor Racks, Clothing Racks, def Weapon Lockers etc... things = new List <Thing>(); foreach (var c in DSU.AllSlotCellsList()) { things.AddRange(__instance.Map.thingGrid.ThingsListAtFast(c).FindAll(t => t.def.EverStorable(false))); } switch (things.Count) { case 0 when cds.cdsProps.showContents: return(false); // If it's empty, player will see! case 0: s = "LWM_DS_Empty".Translate(); break; case 1: s = 1.ToStringCached(); // Why not s="1";? You never know, someone may be playing in... break; default: { if (AllSameType(things)) { s = "x" + things.Count.ToStringCached(); } else { s = "[ " + things.Count.ToStringCached() + " ]"; } break; } } GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(__instance, 0f), s, GenMapUI.DefaultThingLabelColor); return(false); } case GuiOverlayType.CountOfStacksPerCell: { // maybe Armor Racks, Clothing Racks? foreach (var c in DSU.AllSlotCellsList()) { things = __instance.Map.thingGrid.ThingsListAtFast(c).FindAll(t => t.def.EverStorable(false)); switch (things.Count) { case 0 when cds.cdsProps.showContents: continue; // if it's empty, player will see! case 0: s = "LWM_DS_Empty".Translate(); break; case 1: s = 1.ToStringCached(); // ..a language that doesn't use arabic numerals? break; default: { if (AllSameType(things)) { s = "x" + things.Count.ToStringCached(); } else { s = "[ " + things.Count.ToStringCached() + " ]"; } break; } } var l2 = GenMapUI.LabelDrawPosFor(c); // l2.x+=cds.x; // l2.y+=cds.y; l2.y += 10f; GenMapUI.DrawThingLabel(l2, s, GenMapUI.DefaultThingLabelColor); } return(false); } case GuiOverlayType.SumOfAllItems: { // probably food baskets, skips, etc... things = new List <Thing>(); foreach (var c in DSU.slotGroup.CellsList) { things.AddRange(__instance.Map.thingGrid.ThingsListAtFast(c) .FindAll(t => t.def.EverStorable(false))); } if (things.Count == 0) { if (cds.cdsProps.showContents) { return(false); // if it's empty, player will see } s = "LWM_DS_Empty".Translate(); } else { var count = things[0].stackCount; var allTheSame = true; for (var i = 1; i < things.Count; i++) { if (things[i].def != things[0].def) { allTheSame = false; } count += things[i].stackCount; } if (allTheSame) { s = count.ToStringCached(); } else { s = "[ " + count.ToStringCached() + " ]"; } } GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(__instance, 0f), s, GenMapUI.DefaultThingLabelColor); return(false); } case GuiOverlayType.SumOfItemsPerCell: { // Big Shelves var anyItems = false; var itemsWithStackSizeOne = false; foreach (var c in DSU.AllSlotCellsList()) { things = __instance.Map.thingGrid.ThingsListAtFast(c).FindAll(t => t.def.EverStorable(false)); if (things.Count > 0) { anyItems = true; var count = 0; foreach (var t in things) { if (itemsWithStackSizeOne || t.def.stackLimit == 1) { itemsWithStackSizeOne = true; if (things.Count == 1) { s = 1.ToStringCached(); // ..a language that doesn't use arabic numerals? } else if (AllSameType(things)) { s = "x" + things.Count.ToStringCached(); } else { s = "[ " + things.Count.ToStringCached() + " ]"; } var l = GenMapUI.LabelDrawPosFor(c); l.y += 10f; GenMapUI.DrawThingLabel(l, s, GenMapUI.DefaultThingLabelColor); goto WhyDoesCSharpNotHaveBreakTwo; } else { count += t.stackCount; } } if (AllSameType(things)) { s = count.ToStringCached(); } else { s = "[ " + count.ToStringCached() + " ]"; } var l2 = GenMapUI.LabelDrawPosFor(c); l2.y += 10f; GenMapUI.DrawThingLabel(l2, s, GenMapUI.DefaultThingLabelColor); } // if count > 0 WhyDoesCSharpNotHaveBreakTwo :; } // foreach cell if (anyItems || cds.cdsProps.showContents) { return(false); } // there are no items, but no way to see that. s = "LWM_DS_Empty".Translate(); GenMapUI.DrawThingLabel(GenMapUI.LabelDrawPosFor(__instance, 0f), s, GenMapUI.DefaultThingLabelColor); return(false); } default: Log.Warning("LWM DeepStorage: could not find GuiOverlayType of " + cds.cdsProps.overlayType); return(true); } }