Skip to content

Commit

Permalink
Merge pull request #17 from rakkhin/development
Browse files Browse the repository at this point in the history
Power generation from mixed mode reactors/minor power transmission fix
  • Loading branch information
WaveFunctionP authored and WaveFunctionP committed Aug 16, 2014
2 parents 980800f + 5f7ebfc commit 5220eca
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 12 deletions.
11 changes: 4 additions & 7 deletions InterstellarPlugin/FNGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -341,9 +341,6 @@ class FNGenerator : FNResourceSuppliableModule, FNUpgradeableModule{
double thermal_power_currently_needed = electrical_power_currently_needed / totalEff;
double thermaldt = Math.Max(Math.Min(maxThermalPower, thermal_power_currently_needed) * TimeWarp.fixedDeltaTime, 0.0);
input_power = consumeFNResource(thermaldt, FNResourceManager.FNRESOURCE_THERMALPOWER);
if (input_power < thermaldt) {
input_power += consumeFNResource(thermaldt-input_power, FNResourceManager.FNRESOURCE_CHARGED_PARTICLES);
}
double wastedt = input_power * totalEff;
consumeFNResource(wastedt, FNResourceManager.FNRESOURCE_WASTEHEAT);
electricdt = input_power * totalEff;
Expand All @@ -352,13 +349,13 @@ class FNGenerator : FNResourceSuppliableModule, FNUpgradeableModule{
} else {
totalEff = 0.85;
double charged_power_currently_needed = electrical_power_currently_needed / totalEff;
input_power = consumeFNResource(Math.Max(charged_power_currently_needed*TimeWarp.fixedDeltaTime,0), FNResourceManager.FNRESOURCE_CHARGED_PARTICLES);
double chageddt = Math.Max(Math.Min(maxChargedPower, charged_power_currently_needed) * TimeWarp.fixedDeltaTime, 0.0);
input_power = consumeFNResource(chageddt, FNResourceManager.FNRESOURCE_CHARGED_PARTICLES);
double wastedt = input_power * totalEff;
consumeFNResource(wastedt, FNResourceManager.FNRESOURCE_WASTEHEAT);
electricdt = input_power * totalEff;
electricdtps = Math.Max(electricdt / TimeWarp.fixedDeltaTime, 0.0);
double wastedt = input_power * totalEff;
max_electricdtps = maxChargedPower * totalEff;
consumeFNResource(wastedt, FNResourceManager.FNRESOURCE_WASTEHEAT);
//supplyFNResource(wastedt, FNResourceManager.FNRESOURCE_WASTEHEAT);
}
outputPower = -(float)supplyFNResourceFixedMax (electricdtps * TimeWarp.fixedDeltaTime, max_electricdtps * TimeWarp.fixedDeltaTime, FNResourceManager.FNRESOURCE_MEGAJOULES) / TimeWarp.fixedDeltaTime;
} else {
Expand Down
2 changes: 1 addition & 1 deletion InterstellarPlugin/FNReactor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ public virtual float getThermalPowerAtTemp(float temp)

public float getThermalPower()
{
return ThermalPower;
return ThermalPower * (1 - chargedParticleRatio);
}

public float getChargedPower()
Expand Down
17 changes: 13 additions & 4 deletions InterstellarPlugin/MicrowavePowerTransmitter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -178,14 +178,23 @@ class MicrowavePowerTransmitter : FNResourceSuppliableModule {
solar_power = 0;
displayed_solar_power = 0;
if (IsEnabled && !relay) {
float fusionReactorsRequirements = 0.0f;

try
{
fusionReactorsRequirements = vessel.FindPartModulesImplementing<FNFusionReactor>().Where(r => r.isActive()).Sum(r => r.powerRequirements);
}
catch (ArgumentNullException)
{
fusionReactorsRequirements = 0.0f;
}

foreach (FNGenerator generator in generators) {
if (generator.isActive()) {
FNThermalSource thermal_source = generator.getThermalSource();
if (thermal_source != null && !thermal_source.isVolatileSource()) {
double output = generator.getMaxPowerOutput();
if (thermal_source is FNFusionReactor) {
output = output * 0.95;
}
double output = -generator.getCurrentPower();
output -= fusionReactorsRequirements / (double)generators.Count(g => g.isActive());
output = output * transmitPower / 100.0;
double gpower = consumeFNResource(output * TimeWarp.fixedDeltaTime, FNResourceManager.FNRESOURCE_MEGAJOULES);
nuclear_power += gpower * 1000 / TimeWarp.fixedDeltaTime;
Expand Down

0 comments on commit 5220eca

Please sign in to comment.