private void DrawForagedFoodPerDay(Rect rect, TransferableOneWay trad) { if (!trad.HasAnyThing) { return; } Pawn p = trad.AnyThing as Pawn; if (p == null) { return; } bool flag; float foragedNutritionPerDay = ForagedFoodPerDayCalculator.GetBaseForagedNutritionPerDay(p, out flag); if (flag) { return; } Widgets.DrawHighlightIfMouseover(rect); GUI.color = ((foragedNutritionPerDay != 0f) ? Color.green : Color.gray); Widgets.Label(rect, "+" + foragedNutritionPerDay.ToString("0.##")); GUI.color = Color.white; TooltipHandler.TipRegion(rect, () => "NutritionForagedPerDayTip".Translate(new object[] { StatDefOf.ForagedNutritionPerDay.Worker.GetExplanationFull(StatRequest.For(p), StatDefOf.ForagedNutritionPerDay.toStringNumberSense, foragedNutritionPerDay) }), trad.GetHashCode() ^ 1958671422); }
private bool DrawGrazeability(Rect rect, TransferableOneWay trad) { if (!trad.HasAnyThing) { return(false); } Pawn pawn = trad.AnyThing as Pawn; if (pawn == null || !VirtualPlantsUtility.CanEverEatVirtualPlants(pawn)) { return(false); } rect.width = 40f; Rect position = new Rect(rect.x + (float)((int)((rect.width - 28f) / 2f)), rect.y + (float)((int)((rect.height - 28f) / 2f)), 28f, 28f); Widgets.DrawHighlightIfMouseover(rect); GUI.DrawTexture(position, TransferableOneWayWidget.CanGrazeIcon); TooltipHandler.TipRegion(rect, delegate() { string text = "AnimalCanGrazeTip".Translate(); if (this.tile != -1) { text = text + "\n\n" + VirtualPlantsUtility.GetVirtualPlantsStatusExplanationAt(this.tile, Find.TickManager.TicksAbs); } return(text); }, trad.GetHashCode() ^ 1948571634); return(true); }
private void DrawNutritionEatenPerDay(Rect rect, TransferableOneWay trad) { if (trad.HasAnyThing) { Pawn p = trad.AnyThing as Pawn; if (p != null && p.RaceProps.EatsFood && !p.Dead && p.needs.food != null) { Widgets.DrawHighlightIfMouseover(rect); string text = (p.needs.food.FoodFallPerTick * 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; TooltipHandler.TipRegion(rect, delegate { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("NoDietCategoryLetter".Translate() + " - " + DietCategory.Omnivorous.ToStringHuman()); DietCategory[] array = (DietCategory[])Enum.GetValues(typeof(DietCategory)); for (int i = 0; i < array.Length; i++) { if (array[i] != 0 && array[i] != DietCategory.Omnivorous) { stringBuilder.AppendLine(); stringBuilder.Append(array[i].ToStringHumanShort() + " - " + array[i].ToStringHuman()); } } return("NutritionEatenPerDayTip".Translate(ThingDefOf.MealSimple.GetStatValueAbstract(StatDefOf.Nutrition).ToString("0.##"), stringBuilder.ToString(), p.RaceProps.foodType.ToHumanString())); }, trad.GetHashCode() ^ 0x17016B3E); } } }
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 && !this.includePawnsMassInMassUsage && !MassUtility.CanEverCarryAnything(pawn)) { return; } Widgets.DrawHighlightIfMouseover(rect); if (pawn == null || this.includePawnsMassInMassUsage) { float mass = this.GetMass(anyThing); if (pawn != null) { float gearMass = 0f; float invMass = 0f; gearMass = MassUtility.GearMass(pawn); if (!InventoryCalculatorsUtility.ShouldIgnoreInventoryOf(pawn, this.ignorePawnInventoryMass)) { invMass = MassUtility.InventoryMass(pawn); } TooltipHandler.TipRegion(rect, () => this.GetPawnMassTip(trad, 0f, mass - gearMass - invMass, gearMass, invMass), trad.GetHashCode() * 59); } else { TooltipHandler.TipRegion(rect, "ItemWeightTip".Translate()); } if (mass > availableMass) { GUI.color = Color.red; } 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, this.ignorePawnInventoryMass)) ? MassUtility.InventoryMass(pawn) : 0f; float num = cap - gearMass - invMass; if (num > 0f) { GUI.color = Color.green; } else if (num < 0f) { GUI.color = Color.red; } else { GUI.color = Color.gray; } Widgets.Label(rect, num.ToStringMassOffset()); TooltipHandler.TipRegion(rect, () => this.GetPawnMassTip(trad, cap, 0f, gearMass, invMass), trad.GetHashCode() * 59); } GUI.color = Color.white; }
private void DrawNutritionEatenPerDay(Rect rect, TransferableOneWay trad) { if (!trad.HasAnyThing) { return; } Pawn p = trad.AnyThing as Pawn; if (p == null || !p.RaceProps.EatsFood || p.Dead || p.needs.food == null) { return; } Widgets.DrawHighlightIfMouseover(rect); string text = (p.needs.food.FoodFallPerTickAssumingCategory(HungerCategory.Fed, ignoreMalnutrition: 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, showDiet: true, showLegend: true, showCalculations: false), trad.GetHashCode() ^ 0x17016B3E); } }
private void DrawForagedFoodPerDay(Rect rect, TransferableOneWay trad) { if (!trad.HasAnyThing) { return; } Pawn p = trad.AnyThing as Pawn; if (p == null) { return; } bool skip; float foragedNutritionPerDay = ForagedFoodPerDayCalculator.GetBaseForagedNutritionPerDay(p, out skip); if (!skip) { 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() ^ 0x74BEF43E); } } }