private bool check_irrigation(GameObject go)
 {
     IrrigationMonitor.Instance sMI = go.GetSMI <IrrigationMonitor.Instance>();
     if (sMI != null)
     {
         return(!sMI.IsInsideState(sMI.sm.replanted.starved) && !sMI.IsInsideState(sMI.sm.wild));
     }
     return(true);
 }
 private string GetIrrigationTooltip(GameObject go)
 {
     IrrigationMonitor.Instance sMI = go.GetSMI <IrrigationMonitor.Instance>();
     if (sMI == null)
     {
         return(string.Empty);
     }
     return(UI.TOOLTIPS.VITALS_CHECKBOX_IRRIGATION.text.Replace("{mass}", GameUtil.GetFormattedMass(sMI.total_fertilizer_available, GameUtil.TimeSlice.None, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}")));
 }
Esempio n. 3
0
            /// <summary>
            /// Applied before UpdateIrrigation runs.
            /// </summary>
            internal static bool Prefix(IrrigationMonitor.Instance __instance, float dt)
            {
                var  consumed   = __instance.def.consumedElements;
                var  storage    = __instance.storage;
                var  wrongTag   = __instance.def.wrongIrrigationTestTag;
                var  sm         = __instance.sm;
                bool correct    = true;
                bool wrong      = false;
                bool canRecover = true;

                if (consumed != null && storage != null)
                {
                    float modifier = GetFertilizerUsage(__instance.gameObject) * dt;
                    int   n        = consumed.Length;
                    var   irrigant = ListPool <KPrefabID, IrrigationMonitor> .Allocate();

                    GetFertilizers(storage, irrigant);
                    for (int i = 0; i < n; i++)
                    {
                        ref var consumeInfo = ref consumed[i];
                        float   mass        = GetMass(irrigant, consumeInfo.tag, wrongTag, ref wrong),
                                target      = consumeInfo.massConsumptionRate * modifier;
                        __instance.total_available_mass = mass;
                        if (mass < target)
                        {
                            correct = false;
                            break;
                        }
                        // Could not find this constant in the game code
                        if (mass < target * 30.0f)
                        {
                            canRecover = false;
                            break;
                        }
                    }
                    irrigant.Recycle();
                }
 private string GetIrrigationLabel(GameObject go)
 {
     IrrigationMonitor.Instance sMI = go.GetSMI <IrrigationMonitor.Instance>();
     return(Db.Get().Amounts.Irrigation.Name + "\n    • " + ElementLoader.GetElement(sMI.def.consumedElements[0].tag).name + ": " + GameUtil.GetFormattedMass(sMI.def.consumedElements[0].massConsumptionRate, GameUtil.TimeSlice.PerCycle, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}"));
 }