private bool DrawGrazeability(Rect rect, TransferableOneWay trad) { if (!trad.HasAnyThing) { return(false); } if (!(trad.AnyThing is Pawn pawn) || !VirtualPlantsUtility.CanEverEatVirtualPlants(pawn)) { return(false); } rect.width = 40f; Rect position = new Rect(rect.x + ((int)((rect.width - 28f) / 2f)), rect.y + ((int)((rect.height - 28f) / 2f)), 28f, 28f); Widgets.DrawHighlightIfMouseover(rect); GUI.DrawTexture(position, CanGrazeIcon); if (Mouse.IsOver(rect)) { TooltipHandler.TipRegion(rect, delegate() { TaggedString taggedString = "AnimalCanGrazeTip".Translate(); if (tile != -1) { taggedString += "\n\n" + VirtualPlantsUtility.GetVirtualPlantsStatusExplanationAt(tile, Find.TickManager.TicksAbs); } return(taggedString); }, trad.GetHashCode() ^ 1948571634); } return(true); }
private void DrawMass(Rect rect, TransferableOneWay trad, float availableMass) { if (!trad.HasAnyThing) { return; } Thing anyThing = trad.AnyThing; Pawn pawn = anyThing as Pawn; if (pawn != null && !includePawnsMassInMassUsage && !MassUtility.CanEverCarryAnything(pawn)) { return; } Widgets.DrawHighlightIfMouseover(rect); if (pawn == null || includePawnsMassInMassUsage) { float mass = GetMass(anyThing); if (Mouse.IsOver(rect)) { if (pawn != null) { float gearMass = 0f; float invMass = 0f; gearMass = MassUtility.GearMass(pawn); if (!InventoryCalculatorsUtility.ShouldIgnoreInventoryOf(pawn, ignorePawnInventoryMass)) { invMass = MassUtility.InventoryMass(pawn); } TooltipHandler.TipRegion(rect, () => GetPawnMassTip(trad, 0f, mass - gearMass - invMass, gearMass, invMass), trad.GetHashCode() * 59); } else { TooltipHandler.TipRegion(rect, "ItemWeightTip".Translate()); } } if (mass > availableMass) { GUI.color = ColoredText.RedReadable; } else { GUI.color = TransferableOneWayWidget.ItemMassColor; } Widgets.Label(rect, mass.ToStringMass()); } else { float cap = MassUtility.Capacity(pawn, null); float gearMass = MassUtility.GearMass(pawn); float invMass = InventoryCalculatorsUtility.ShouldIgnoreInventoryOf(pawn, ignorePawnInventoryMass) ? 0f : MassUtility.InventoryMass(pawn); float num = cap - gearMass - invMass; if (num > 0f) { GUI.color = Color.green; } else if (num < 0f) { GUI.color = ColoredText.RedReadable; } else { GUI.color = Color.gray; } Widgets.Label(rect, num.ToStringMassOffset()); if (Mouse.IsOver(rect)) { TooltipHandler.TipRegion(rect, () => GetPawnMassTip(trad, cap, 0f, gearMass, invMass), trad.GetHashCode() * 59); } } GUI.color = Color.white; }
private void DrawNutritionEatenPerDay(Rect rect, TransferableOneWay trad) { if (!trad.HasAnyThing) { return; } if (!(trad.AnyThing is Pawn p) || !p.RaceProps.EatsFood || p.Dead || p.needs.food == null) { return; } Widgets.DrawHighlightIfMouseover(rect); string text = (p.needs.food.FoodFallPerTickAssumingCategory(HungerCategory.Fed, true) * 60000f).ToString("0.##"); DietCategory resolvedDietCategory = p.RaceProps.ResolvedDietCategory; if (resolvedDietCategory != DietCategory.Omnivorous) { text = text + " (" + resolvedDietCategory.ToStringHumanShort() + ")"; } GUI.color = new Color(1f, 0.5f, 0f); Widgets.Label(rect, text); GUI.color = Color.white; if (Mouse.IsOver(rect)) { TooltipHandler.TipRegion(rect, () => RaceProperties.NutritionEatenPerDayExplanation_NewTemp(p, true, true, false), trad.GetHashCode() ^ 385968958); } }
private void DrawForagedFoodPerDay(Rect rect, TransferableOneWay trad) { if (!trad.HasAnyThing) { return; } if (!(trad.AnyThing is Pawn p)) { return; } float foragedNutritionPerDay = ForagedFoodPerDayCalculator.GetBaseForagedNutritionPerDay(p, out bool flag); if (flag) { return; } Widgets.DrawHighlightIfMouseover(rect); GUI.color = ((foragedNutritionPerDay == 0f) ? Color.gray : Color.green); Widgets.Label(rect, "+" + foragedNutritionPerDay.ToString("0.##")); GUI.color = Color.white; if (Mouse.IsOver(rect)) { TooltipHandler.TipRegion(rect, () => "NutritionForagedPerDayTip".Translate(StatDefOf.ForagedNutritionPerDay.Worker.GetExplanationFull(StatRequest.For(p), StatDefOf.ForagedNutritionPerDay.toStringNumberSense, foragedNutritionPerDay)), trad.GetHashCode() ^ 1958671422); } }