/// <summary>
        /// Calculate how long we can burn at full throttle until something important runs out.
        /// </summary>
        /// <param name="vessel"></param>
        /// <param name="propellantsConsumed"></param>
        /// <param name="propellantsAvailable"></param>
        /// <param name="maxBurnTime"></param>
        private static double CalculateMaxBurnTime(ShipState vessel, Tally propellantsConsumed)
        {
            double maxBurnTime        = double.PositiveInfinity;
            Tally  availableResources = vessel.AvailableResources;

            foreach (string resourceName in propellantsConsumed.Keys)
            {
                if (ShouldIgnore(resourceName))
                {
                    // ignore this for burn time, it's replenishable
                    continue;
                }
                if (!availableResources.Has(resourceName))
                {
                    // we're all out!
                    return(0.0);
                }
                double availableAmount = availableResources[resourceName];
                double rate            = propellantsConsumed[resourceName];
                double burnTime        = availableAmount / rate;
                if (burnTime < maxBurnTime)
                {
                    maxBurnTime = burnTime;
                }
            }
            return(maxBurnTime);
        }
        public void Start()
        {
            wasFuelCheat = CheatOptions.InfinitePropellant;
            if (useSimpleAcceleration)
            {
                Logging.Log("Using simple acceleration model");
            }
            else
            {
                Logging.Log("Using complex acceleration model");
                if (wasFuelCheat)
                {
                    Logging.Log("Infinite fuel cheat is turned on, using simple acceleration model");
                }
                else
                {
                    Logging.Log("Using complex acceleration model");
                }
            }
            lastEngineCount = -1;

            vessel         = new ShipState();
            lastUpdateText = null;
            lastBurnTime   = int.MinValue;
        }