forked from FractalUK/KSPInterstellar
-
Notifications
You must be signed in to change notification settings - Fork 13
/
ORSResourceScanner.cs
76 lines (64 loc) · 2.86 KB
/
ORSResourceScanner.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OpenResourceSystem
{
public class ORSResourceScanner : PartModule
{
[KSPField(isPersistant = false)]
public string resourceName = "";
[KSPField(isPersistant = false)]
public bool mapViewAvailable = false;
[KSPField(isPersistant = false, guiActive = true, guiName = "Abundance")]
public string Ab;
protected double abundance = 0;
private ORSPlanetaryResourceInfo resourceInfo = null;
[KSPEvent(guiActive = true, guiName = "Display Hotspots", active = true)]
public void DisplayResource()
{
ORSPlanetaryResourceMapData.setDisplayedResource(resourceName);
}
[KSPEvent(guiActive = true, guiName = "Hide Hotspots", active = true)]
public void HideResource()
{
ORSPlanetaryResourceMapData.setDisplayedResource("");
}
public override void OnStart(PartModule.StartState state)
{
if (state == StartState.Editor) { return; }
this.part.force_activate();
}
public override void OnUpdate()
{
ORSPlanetaryResourceMapData.updatePlanetaryResourceMap();
if (resourceInfo == null)
if (ORSPlanetaryResourceMapData.getPlanetaryResourceMapData.ContainsKey(resourceName))
resourceInfo = ORSPlanetaryResourceMapData.getPlanetaryResourceMapData[resourceName];
Events["DisplayResource"].active = Events["DisplayResource"].guiActive = !ORSPlanetaryResourceMapData.resourceIsDisplayed(resourceName) && mapViewAvailable;
Events["DisplayResource"].guiName = "Display " + resourceName + " hotspots";
Events["HideResource"].active = Events["HideResource"].guiActive = ORSPlanetaryResourceMapData.resourceIsDisplayed(resourceName) && mapViewAvailable;
Events["HideResource"].guiName = "Hide " + resourceName + " hotspots";
Fields["Ab"].guiName = resourceName + " abundance";
if (resourceInfo != null)
{
if (resourceInfo.getResourceScale() == 1)
{
Ab = (abundance * 100.0).ToString("0.00") + "%";
}
else
{
Ab = (abundance * 1000000.0).ToString("0.0") + "ppm";
}
}
else
Ab = "Broken:(";
}
public override void OnFixedUpdate()
{
CelestialBody body = vessel.mainBody;
ORSPlanetaryResourcePixel res_pixel = ORSPlanetaryResourceMapData.getResourceAvailability(vessel.mainBody.flightGlobalsIndex, resourceName, body.GetLatitude(vessel.transform.position), body.GetLongitude(vessel.transform.position));
abundance = res_pixel.getAmount();
}
}
}