Skip to content

Commit

Permalink
Activate and deactivate resource scanners properly
Browse files Browse the repository at this point in the history
  • Loading branch information
DMagic1 committed Jun 12, 2015
1 parent 66bde39 commit 157b1fc
Showing 1 changed file with 36 additions and 18 deletions.
54 changes: 36 additions & 18 deletions SCANsat/SCAN_PartModules/SCANresourceDisplay.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@ class SCANresourceDisplay : PartModule, IAnimatedModule
private float abundanceValue;

private List<ModuleResourceScanner> stockScanners;
private ModuleAnimationGroup animGroup;
private Dictionary<string, ResourceCache.AbundanceSummary> abundanceSummary;
private CelestialBody body;
private bool tooHigh;
private bool fuzzy;
private bool forceStart;
private bool refreshState;
private bool activated;

public override void OnStart(PartModule.StartState state)
Expand All @@ -37,11 +38,15 @@ public override void OnStart(PartModule.StartState state)
GameEvents.onVesselSOIChanged.Add(onSOIChange);

part.force_activate();
this.enabled = true;
this.isEnabled = true;
activated = true;
forceStart = true;
refreshState = true;

stockScanners = findScanners();
animGroup = findAnimator();

if (animGroup == null || animGroup.isDeployed)
enableConnectedScanners();

setupFields(stockScanners.FirstOrDefault());

Expand All @@ -54,6 +59,11 @@ private List<ModuleResourceScanner> findScanners()
return part.FindModulesImplementing<ModuleResourceScanner>().Where(r => r.ScannerType == 0 && r.ResourceName == ResourceName).ToList();
}

private ModuleAnimationGroup findAnimator()
{
return part.FindModulesImplementing<ModuleAnimationGroup>().FirstOrDefault();
}

private void setupFields(ModuleResourceScanner m)
{
if (m != null)
Expand Down Expand Up @@ -90,15 +100,11 @@ private void Update()
if (SCANcontroller.controller == null)
return;

if (forceStart)
if (refreshState)
{
if (stockScanners != null && SCANcontroller.controller.disableStockResource)
{
foreach (ModuleResourceScanner m in stockScanners)
{
m.DisableModule();
}
}
if (SCANcontroller.controller.disableStockResource)
disableConnectedScanners();
refreshState = false;
}

if (!SCANcontroller.controller.disableStockResource)
Expand Down Expand Up @@ -196,10 +202,9 @@ private void refreshAbundance(int bodyID)
ToDictionary(b => b.Key, b => b.First());
}

public void EnableModule()
private void disableConnectedScanners()
{
activated = true;
if (stockScanners != null && SCANcontroller.controller != null && SCANcontroller.controller.disableStockResource)
if (stockScanners != null)
{
foreach (ModuleResourceScanner m in stockScanners)
{
Expand All @@ -208,18 +213,31 @@ public void EnableModule()
}
}

public void DisableModule()
private void enableConnectedScanners()
{
activated = false;
if (stockScanners != null && SCANcontroller.controller != null && SCANcontroller.controller.disableStockResource)
if (stockScanners != null)
{
foreach (ModuleResourceScanner m in stockScanners)
{
m.DisableModule();
m.EnableModule();
}
}
}

public void EnableModule()
{
activated = true;
if (SCANcontroller.controller != null && SCANcontroller.controller.disableStockResource)
disableConnectedScanners();
}

public void DisableModule()
{
activated = false;
if (SCANcontroller.controller != null && SCANcontroller.controller.disableStockResource)
disableConnectedScanners();
}

public bool ModuleIsActive()
{
return activated;
Expand Down

0 comments on commit 157b1fc

Please sign in to comment.