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