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);
        }