Relicensed to Modified BSD.
[VOID.git] / VOID_SurfAtmo.cs
blob:a/VOID_SurfAtmo.cs -> blob:b/VOID_SurfAtmo.cs
--- a/VOID_SurfAtmo.cs
+++ b/VOID_SurfAtmo.cs
@@ -36,21 +36,21 @@
 	public class VOID_SurfAtmo : VOID_WindowModule
 	{
 		[AVOID_SaveValue("precisionValues")]
-		protected long _precisionValues = 230584300921369395;
+		protected VOID_SaveValue<long> _precisionValues;
 		protected IntCollection precisionValues;
 
 		public VOID_SurfAtmo()
 		{
-			this._Name = "Surface & Atmospheric Information";
+			this.Name = "Surface & Atmospheric Info";
 
 			this.WindowPos.x = Screen.width - 260f;
 			this.WindowPos.y = 85;
+
+			this._precisionValues = (VOID_SaveValue<long>)384307168202282325;
 		}
 
-		public override void ModuleWindow(int _)
+		public override void ModuleWindow(int id)
 		{
-			base.ModuleWindow (_);
-
 			int idx = 0;
 
 			GUILayout.BeginVertical();
@@ -67,6 +67,9 @@
 			this.precisionValues [idx]= (ushort)VOID_Data.terrainElevation.DoGUIHorizontal (this.precisionValues [idx]);
 			idx++;
 
+			this.precisionValues[idx] = (ushort)VOID_Data.downrangeDistance.DoGUIHorizontal(this.precisionValues[idx]);
+			idx++;
+
 			this.precisionValues [idx]= (ushort)VOID_Data.surfVelocity.DoGUIHorizontal (this.precisionValues [idx]);
 			idx++;
 
@@ -78,7 +81,8 @@
 
 			VOID_Data.temperature.DoGUIHorizontal ("F2");
 
-			VOID_Data.atmDensity.DoGUIHorizontal (3);
+			this.precisionValues [idx]= (ushort)VOID_Data.atmDensity.DoGUIHorizontal (this.precisionValues [idx]);
+			idx++;
 
 			VOID_Data.atmPressure.DoGUIHorizontal ("F2");
 
@@ -89,7 +93,8 @@
 			VOID_Data.currBiome.DoGUIHorizontal ();
 
 			GUILayout.EndVertical();
-			GUI.DragWindow();
+
+			base.ModuleWindow(id);
 		}
 
 		public override void LoadConfig ()
@@ -99,107 +104,11 @@
 			this.precisionValues = new IntCollection (4, this._precisionValues);
 		}
 
-		public override void _SaveToConfig (KSP.IO.PluginConfiguration config)
+		public override void Save (KSP.IO.PluginConfiguration config)
 		{
-			this._precisionValues = this.precisionValues.collection;
+			this._precisionValues.value = this.precisionValues.collection;
 
-			base._SaveToConfig (config);
+			base.Save (config);
 		}
 	}
-
-	public static partial class VOID_Data
-	{
-		public static readonly VOID_DoubleValue trueAltitude = new VOID_DoubleValue(
-			"Altitude (true)",
-			delegate()
-			{
-				double alt_true = VOID_Core.Instance.vessel.orbit.altitude - VOID_Core.Instance.vessel.terrainAltitude;
-				// HACK: This assumes that on worlds with oceans, all water is fixed at 0 m,
-				// and water covers the whole surface at 0 m.
-				if (VOID_Core.Instance.vessel.terrainAltitude < 0 && VOID_Core.Instance.vessel.mainBody.ocean )
-					alt_true = VOID_Core.Instance.vessel.orbit.altitude;
-				return alt_true;
-			},
-			"m"
-		);
-
-		public static readonly VOID_StrValue surfLatitude = new VOID_StrValue(
-			"Latitude",
-			new Func<string> (() => Tools.GetLatitudeString(VOID_Core.Instance.vessel))
-		);
-
-		public static readonly VOID_StrValue surfLongitude = new VOID_StrValue(
-			"Longitude",
-			new Func<string> (() => Tools.GetLongitudeString(VOID_Core.Instance.vessel))
-		);
-
-		public static readonly VOID_StrValue vesselHeading = new VOID_StrValue(
-			"Heading",
-			delegate()
-		{
-			double heading = core.vessel.getSurfaceHeading();
-			string cardinal = Tools.get_heading_text(heading);
-
-			return string.Format(
-				"{0}° {1}",
-				heading.ToString("F2"),
-				cardinal
-			);
-		}
-		);
-
-		public static readonly VOID_DoubleValue terrainElevation = new VOID_DoubleValue(
-			"Terrain elevation",
-			new Func<double> (() => VOID_Core.Instance.vessel.terrainAltitude),
-			"m"
-		);
-
-		public static readonly VOID_DoubleValue surfVelocity = new VOID_DoubleValue(
-			"Surface velocity",
-			new Func<double> (() => VOID_Core.Instance.vessel.srf_velocity.magnitude),
-			"m/s"
-		);
-
-		public static readonly VOID_DoubleValue vertVelocity = new VOID_DoubleValue(
-			"Vertical speed",
-			new Func<double> (() => VOID_Core.Instance.vessel.verticalSpeed),
-			"m/s"
-		);
-
-		public static readonly VOID_DoubleValue horzVelocity = new VOID_DoubleValue(
-			"Horizontal speed",
-			new Func<double> (() => VOID_Core.Instance.vessel.horizontalSrfSpeed),
-			"m/s"
-		);
-
-		public static readonly VOID_FloatValue temperature = new VOID_FloatValue(
-			"Temperature",
-			new Func<float> (() => VOID_Core.Instance.vessel.flightIntegrator.getExternalTemperature()),
-			"°C"
-		);
-
-		public static readonly VOID_DoubleValue atmDensity = new VOID_DoubleValue (
-			"Atmosphere Density",
-			new Func<double> (() => VOID_Core.Instance.vessel.atmDensity * 1000f),
-			"g/m³"
-		);
-
-		public static readonly VOID_DoubleValue atmPressure = new VOID_DoubleValue (
-			"Pressure",
-			new Func<double> (() => VOID_Core.Instance.vessel.staticPressure),
-			"atm"
-		);
-
-		public static readonly VOID_FloatValue atmLimit = new VOID_FloatValue(
-			"Atmosphere Limit",
-			new Func<float> (() => VOID_Core.Instance.vessel.mainBody.maxAtmosphereAltitude),
-			"m"
-		);
-
-		public static readonly VOID_StrValue currBiome = new VOID_StrValue(
-			"Biome",
-			new Func<string> (() => Tools.GetBiome(VOID_Core.Instance.vessel).name)
-		);
-
-	}
 }