public double consumeFNResourcePerSecond(double power_requested_per_second, String resourcename, ResourceManager manager = null) { if (power_requested_per_second.IsInfinityOrNaN()) { Debug.Log("[KSPI]: consumeFNResourcePerSecond was called with illegal value"); return(0); } if (manager == null) { manager = getManagerForVessel(resourcename); } if (manager == null) { return(0); } double availablePower; if (!fnresource_supplied.TryGetValue(resourcename, out availablePower)) { fnresource_supplied[resourcename] = 0; } power_requested_per_second = Math.Max(power_requested_per_second, 0); double power_taken_per_second = Math.Max(Math.Min(power_requested_per_second, availablePower), 0); fnresource_supplied[resourcename] -= power_taken_per_second; manager.powerDrawPerSecond(this, power_requested_per_second, power_taken_per_second); return(power_taken_per_second); }
public double consumeFNResourcePerSecond(double power_per_second, String resourcename, ResourceManager manager = null) { if (double.IsNaN(power_per_second) || String.IsNullOrEmpty(resourcename)) { Debug.Log("[KSPI] - consumeFNResourcePerSecond illegal values."); return(0); } power_per_second = Math.Max(power_per_second, 0); if (manager == null) { manager = getManagerForVessel(resourcename); } if (manager == null) { return(0); } if (!fnresource_supplied.ContainsKey(resourcename)) { fnresource_supplied.Add(resourcename, 0); } double power_taken_per_second = Math.Max(Math.Min(power_per_second, fnresource_supplied[resourcename]), 0); fnresource_supplied[resourcename] -= power_taken_per_second; manager.powerDrawPerSecond(this, power_per_second, power_taken_per_second); return(power_taken_per_second); }
public double consumeRemainingResourcePerSecond(double power_requested_per_second, String resourcename, ResourceManager manager = null) { if (manager == null) { manager = getManagerForVessel(resourcename); } if (manager == null) { return(0); } if (!fnresource_supplied.ContainsKey(resourcename)) { fnresource_supplied.Add(resourcename, 0); } power_requested_per_second = Math.Max(power_requested_per_second, 0); double power_taken_per_second = Math.Max(Math.Min(power_requested_per_second, fnresource_supplied[resourcename]), 0); fnresource_supplied[resourcename] -= power_taken_per_second; manager.powerDrawPerSecond(this, power_taken_per_second, power_taken_per_second); return(power_taken_per_second); }
public double consumeFNResourcePerSecond(double power_requested_per_second, String resourcename, ResourceManager manager = null) { if (double.IsNaN(power_requested_per_second) || double.IsInfinity(power_requested_per_second)) { Debug.Log("[KSPI]: consumeFNResourcePerSecond was called with illegal power_requested_per_second"); return(0); } if (manager == null) { manager = getManagerForVessel(resourcename); } if (manager == null) { return(0); } if (!fnresource_supplied.ContainsKey(resourcename)) { fnresource_supplied.Add(resourcename, 0); } power_requested_per_second = Math.Max(power_requested_per_second, 0); double power_taken_per_second = Math.Max(Math.Min(power_requested_per_second, fnresource_supplied[resourcename]), 0); fnresource_supplied[resourcename] -= power_taken_per_second; manager.powerDrawPerSecond(this, power_requested_per_second, power_taken_per_second); return(power_taken_per_second); }
public double consumeFNResourcePerSecondBuffered(double requestedPowerPerSecond, String resourcename, double limitBarRatio = 0.1, ResourceManager manager = null) { if (requestedPowerPerSecond.IsInfinityOrNaN() || String.IsNullOrEmpty(resourcename)) { Debug.Log("[KSPI]: consumeFNResourcePerSecondBuffered was called with illegal value"); return(0); } requestedPowerPerSecond = Math.Max(requestedPowerPerSecond, 0); if (manager == null) { manager = getManagerForVessel(resourcename); } if (manager == null) { return(0); } double availablePower; if (!fnresource_supplied.TryGetValue(resourcename, out availablePower)) { fnresource_supplied[resourcename] = 0; } var power_taken_per_second = Math.Max(Math.Min(requestedPowerPerSecond, availablePower), 0); fnresource_supplied[resourcename] -= power_taken_per_second; // supplement with buffer power if needed and available var powerShortage = requestedPowerPerSecond - availablePower; if (powerShortage > 0) { var currentCapacity = manager.getTotalResourceCapacity(); var currentAmount = currentCapacity * manager.ResourceBarRatioBegin; var fixedPowerShortage = powerShortage * timeWarpFixedDeltaTime; if (currentAmount - fixedPowerShortage > currentCapacity * limitBarRatio) { power_taken_per_second += (part.RequestResource(resourcename, fixedPowerShortage) / timeWarpFixedDeltaTime); } } manager.powerDrawPerSecond(this, requestedPowerPerSecond, power_taken_per_second); return(power_taken_per_second); }