public static float ApproxDaysUntilRot(List <Thing> potentiallyFood, int assumingTile) { float num = 1000f; for (int i = 0; i < potentiallyFood.Count; i++) { Thing thing = potentiallyFood[i]; if (thing.def.IsNutritionGivingIngestible) { CompRottable compRottable = thing.TryGetComp <CompRottable>(); if (compRottable != null && compRottable.Active) { num = Mathf.Min(num, (float)compRottable.ApproxTicksUntilRotWhenAtTempOfTile(assumingTile) / 60000f); } } } return(num); }
public static int ApproxTicksUntilRot_AssumeTimePassesBy(CompRottable rot, int tile, List <Pair <int, int> > ticksToArrive = null) { float num = 0f; int num2 = Find.TickManager.TicksAbs; while (num < 1f && (float)num2 < (float)Find.TickManager.TicksAbs + 3.606E+07f) { int tile2 = (!ticksToArrive.NullOrEmpty <Pair <int, int> >()) ? CaravanArrivalTimeEstimator.TileIllBeInAt(num2, ticksToArrive, Find.TickManager.TicksAbs) : tile; int num3 = Mathf.FloorToInt((float)rot.ApproxTicksUntilRotWhenAtTempOfTile(tile2, num2) * (1f - num)); if (num3 <= 0) { break; } int num4 = Mathf.Min(num3, 26999); num += (float)num4 / (float)num3; num2 += num4; } return(num2 - Find.TickManager.TicksAbs); }