Skip to content

Commit

Permalink
Improved parsing of FSD modifications from the Frontier API.
Browse files Browse the repository at this point in the history
Fix double-adding modifications to a given module.
  • Loading branch information
Tkael committed Jun 29, 2024
1 parent 6ac732d commit 847028a
Showing 1 changed file with 22 additions and 12 deletions.
34 changes: 22 additions & 12 deletions ShipMonitor/FrontierApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -256,27 +256,37 @@ public static Module ModuleFromJson(JObject json)
if ( fsdOptimalMassMultiplier != null )
{
var baseOptimalMass = Convert.ToDecimal( module.GetFsdOptimalMass() );
module.modifiers.Add( new EngineeringModifier
var modifier = module.modifiers.FirstOrDefault( m => m.EDName == "FSDOptimalMass" );
if ( modifier is null )
{
EDName = "FSDOptimalMass",
currentValue = baseOptimalMass * (decimal)fsdOptimalMassMultiplier[ "value" ],
originalValue = baseOptimalMass,
lessIsGood = false,
} );
modifier = new EngineeringModifier
{
EDName = "FSDOptimalMass",
lessIsGood = false,
};
module.modifiers.Add( modifier );
}
modifier.currentValue = baseOptimalMass * (decimal)fsdOptimalMassMultiplier[ "value" ];
modifier.originalValue = baseOptimalMass;
}

// Get the ship FSD's max fuel per jump for jump calculations
var fsdMaxFuelPerJumpMultiplier = json[ "WorkInProgress_modifications" ]?["OutfittingFieldType_MaxFuelPerJump"];
if ( fsdMaxFuelPerJumpMultiplier != null )
{
var baseMaxFuelPerJump = module.GetFsdMaxFuelPerJump();
module.modifiers.Add( new EngineeringModifier
var modifier = module.modifiers.FirstOrDefault( m => m.EDName == "MaxFuelPerJump" );
if ( modifier is null )
{
EDName = "MaxFuelPerJump",
currentValue = baseMaxFuelPerJump * (decimal)fsdMaxFuelPerJumpMultiplier[ "value" ],
originalValue = baseMaxFuelPerJump,
lessIsGood = false,
} );
modifier = new EngineeringModifier
{
EDName = "MaxFuelPerJump",
lessIsGood = false,
};
module.modifiers.Add( modifier );
}
modifier.currentValue = baseMaxFuelPerJump * (decimal)fsdMaxFuelPerJumpMultiplier[ "value" ];
modifier.originalValue = baseMaxFuelPerJump;
}
}
}
Expand Down

0 comments on commit 847028a

Please sign in to comment.