Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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);
         }
     }
 }
Exemple #4
0
        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);
                }
            }
        }