Skip to content

Commit

Permalink
Safer "Science" VesselType Handling
Browse files Browse the repository at this point in the history
Fixes #68
Allow "Science" to be a vessel type without demanding it also be BG Deployed Science.
  • Loading branch information
DRVeyl committed Jan 17, 2022
1 parent 7e489f8 commit 02cd4ce
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions src/RealAntennasProject/RACommNetVessel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,20 @@ public override IScienceDataTransmitter GetBestTransmitter() =>
public override void OnNetworkPreUpdate()
{
base.OnNetworkPreUpdate();
if (Vessel.vesselType == VesselType.DeployedScienceController)
{
var cluster = GetDeployedScienceCluster(Vessel);
powered = cluster?.IsPowered ?? false;
}
var cluster = GetDeployedScienceCluster(Vessel);
if (cluster != null)
powered = cluster.IsPowered;
else if (Vessel.loaded && electricChargeDef != null)
{
Vessel.GetConnectedResourceTotals(electricChargeDef.id, out double amt, out double _);
powered = (amt > 0);
powered = amt > 0;
}
}

public double IdlePowerDraw()
{
double ec = 0;
if (Vessel.vesselType != VesselType.DeployedScienceController)
if (!IsDeployedScienceCluster(Vessel))
{
foreach (RealAntenna ra in antennaList)
{
Expand Down Expand Up @@ -226,10 +224,15 @@ public static bool DeployedLoaded(Part part) =>
(part.FindModuleImplementing<ModuleDeployableAntenna>() is ModuleDeployableAntenna mda) ?
mda.deployState == ModuleDeployablePart.DeployState.EXTENDED : true;

private bool IsDeployedScienceCluster(Vessel v) => GetDeployedScienceCluster(v) != null;
private DeployedScienceCluster GetDeployedScienceCluster(Vessel vessel)
{
var id = vessel.loaded ? vessel.rootPart.persistentId : vessel.protoVessel.protoPartSnapshots[0].persistentId;
DeployedScience.Instance.DeployedScienceClusters.TryGetValue(id, out DeployedScienceCluster cluster);
DeployedScienceCluster cluster = null;
if (vessel.vesselType == VesselType.DeployedScienceController)
{
var id = vessel.loaded ? vessel.rootPart.persistentId : vessel.protoVessel.protoPartSnapshots[0].persistentId;
DeployedScience.Instance?.DeployedScienceClusters?.TryGetValue(id, out cluster);
}
return cluster;
}
}
Expand Down

0 comments on commit 02cd4ce

Please sign in to comment.