Ejemplo n.º 1
0
        public double managedPowerSupplyPerSecondWithMinimumRatio(IResourceSupplier pm, double maximum_power, double ratio_min)
        {
            var minimum_power_per_second = maximum_power * ratio_min;

            var provided_demand_power_per_second = Math.Min(maximum_power, Math.Max(GetCurrentUnfilledResourceDemand(), minimum_power_per_second));
            var required_power_per_second        = Math.Max(GetRequiredResourceDemand(), minimum_power_per_second);
            var managed_supply_per_second        = Math.Min(maximum_power, required_power_per_second);

            currentPowerSupply += managed_supply_per_second;
            stable_supply      += maximum_power;

            PowerGenerated powerGenerated;

            if (!power_produced.TryGetValue(pm, out powerGenerated))
            {
                powerGenerated = new PowerGenerated();
                power_produced.Add(pm, powerGenerated);
            }

            powerGenerated.currentSupply   += managed_supply_per_second;
            powerGenerated.currentProvided += provided_demand_power_per_second;
            powerGenerated.maximumSupply   += maximum_power;
            powerGenerated.minimumSupply   += minimum_power_per_second;

            return(provided_demand_power_per_second);
        }
Ejemplo n.º 2
0
        public PowerGenerated managedRequestedPowerSupplyPerSecondMinimumRatio(IResourceSupplier pm, double available_power, double maximum_power, double ratio_min)
        {
            var minimum_power_per_second = maximum_power * ratio_min;

            var provided_demand_power_per_second = Math.Min(maximum_power, Math.Max(minimum_power_per_second, Math.Max(available_power, GetCurrentUnfilledResourceDemand())));
            var managed_supply_per_second        = Math.Min(maximum_power, Math.Max(minimum_power_per_second, Math.Min(available_power, GetRequiredResourceDemand())));

            currentPowerSupply += managed_supply_per_second;
            stable_supply      += maximum_power;

            var addedPower = new PowerGenerated
            {
                currentSupply   = managed_supply_per_second,
                currentProvided = provided_demand_power_per_second,
                maximumSupply   = maximum_power,
                minimumSupply   = minimum_power_per_second
            };

            PowerGenerated powerGenerated;

            if (!power_produced.TryGetValue(pm, out powerGenerated))
            {
                power_produced.Add(pm, addedPower);
            }
            else
            {
                powerGenerated.currentSupply   += addedPower.currentSupply;
                powerGenerated.currentProvided += addedPower.currentProvided;
                powerGenerated.maximumSupply   += addedPower.maximumSupply;
                powerGenerated.minimumSupply   += addedPower.minimumSupply;
            }

            return(addedPower);
        }
Ejemplo n.º 3
0
        public double powerSupplyPerSecondWithMax(IResourceSupplier pm, double power, double maxpower)
        {
            currentPowerSupply += power;
            stable_supply      += maxpower;

            PowerGenerated powerGenerated;

            if (!power_produced.TryGetValue(pm, out powerGenerated))
            {
                powerGenerated = new PowerGenerated();
                power_produced.Add(pm, powerGenerated);
            }
            powerGenerated.currentSupply += power;
            powerGenerated.maximumSupply += maxpower;

            return(power);
        }
Ejemplo n.º 4
0
        public double powerSupplyFixed(IResourceSupplier pm, double power)
        {
            var current_power_supply_per_second = power / TimeWarpFixedDeltaTime;

            currentPowerSupply += current_power_supply_per_second;
            stable_supply      += current_power_supply_per_second;

            PowerGenerated powerGenerated;

            if (!power_produced.TryGetValue(pm, out powerGenerated))
            {
                powerGenerated = new PowerGenerated();
                power_produced.Add(pm, powerGenerated);
            }
            powerGenerated.currentSupply   += current_power_supply_per_second;
            powerGenerated.currentProvided += current_power_supply_per_second;
            powerGenerated.maximumSupply   += current_power_supply_per_second;

            return(power);
        }