Added buttons to the build engineer settings for key binding the show/hide hotkey functionality.
--- a/Documents/CHANGES.txt
+++ b/Documents/CHANGES.txt
@@ -1,6 +1,18 @@
-1.0.18.1
+1.0.19.0
+ Added: Added current vessel name readout. (antplant)
+ Added: 'Relative Radial Velocity' and 'Time To Rendezvous' readouts. (itwtx)
+ Added: Readout help strings. (harryyoung)
Changed: The 'Torque' value in the editor is now precise to two decimal places.
-
+ Changed: Time formatting reference (Kerbin/Earth) is now based on the in-game setting.
+ Changed: Eccentric Anomaly, Mean Anomaly and Mean Anomaly At Epoc now display in degrees rather than radians.
+ Fixed: Optimised time formatting. (itwtx)
+ Fixed: TimeToAtmosphere checks that the Apoapsis is outside atmosphere. (Kerbas-ad-astra)
+ Fixed: Issue with stage priority flow. Caused Rapier calculations to fail if LF and O are drawn from different tanks. (Padishar)
+ Fixed: Issue with angle to prograde/retrograde calculations on highly inclined orbits.
+ Fixed: Editor input locks not being reset when a scene change is forced (e.g. via Kerbal Construction Time).
+ Fixed: Roll axis readout now shows the correct sign.
+ Removed: Time Formatter readout as it's not required anymore.
+
1.0.18.0
Added: Orbital readouts - "Speed at Periapsis" and "Speed at Apoapsis". (Padishar)
Added: Manoeuvre readouts - "Post-burn Apoapsis" and "Post-burn Periapsis". (Padishar)
--- a/KerbalEngineer/Editor/BuildAdvanced.cs
+++ b/KerbalEngineer/Editor/BuildAdvanced.cs
@@ -1,7 +1,5 @@
//
-// Kerbal Engineer Redux
-//
-// Copyright (C) 2014 CYBUTEK
+// Copyright (C) 2015 CYBUTEK
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -19,7 +17,6 @@
namespace KerbalEngineer.Editor
{
- #region Using Directives
using System;
using Extensions;
using Flight;
@@ -29,13 +26,16 @@
using UnityEngine;
using VesselSimulator;
- #endregion
-
[KSPAddon(KSPAddon.Startup.EditorAny, false)]
public class BuildAdvanced : MonoBehaviour
{
- #region Fields
- public static float Altitude = 0.0f;
+ public static float Altitude;
+
+ private static Rect compactModeRect = new Rect(0.0f, 5.0f, 0.0f, 20.0f);
+ private static Stage stage;
+ private static int stagesCount;
+ private static int stagesLength;
+ private static string title;
private GUIStyle areaSettingStyle;
private GUIStyle areaStyle;
@@ -64,9 +64,7 @@
private GUIStyle titleStyle;
private bool visible = true;
private GUIStyle windowStyle;
- #endregion
-
- #region Properties
+
/// <summary>
/// Gets the current instance if started or returns null.
/// </summary>
@@ -146,14 +144,6 @@
visible = value;
}
}
- #endregion
-
- #region Methods
- private static Rect compactModeRect = new Rect(0.0f, 5.0f, 0.0f, 20.0f);
- private static Stage stage;
- private static int stagesCount;
- private static int stagesLength;
- private static string title;
protected void Awake()
{
@@ -179,6 +169,8 @@
/// </summary>
protected void OnDestroy()
{
+ Logger.Log("BuildAdvanced->OnDestroy");
+
try
{
SettingHandler handler = new SettingHandler();
@@ -198,6 +190,8 @@
{
Logger.Exception(ex, "BuildAdvanced.OnDestroy()");
}
+
+ EditorLock(false);
}
protected void OnGUI()
@@ -566,6 +560,18 @@
GUILayout.Label("Minimum delay between simulations: " + SimManager.minSimTime.TotalMilliseconds + "ms", settingStyle);
GUI.skin = HighLogic.Skin;
SimManager.minSimTime = TimeSpan.FromMilliseconds(GUILayout.HorizontalSlider((float)SimManager.minSimTime.TotalMilliseconds, 0, 2000.0f));
+
+ GUILayout.BeginHorizontal();
+ if (GUILayout.Button("Editor Show/Hide Key: " + KeyBinder.EditorShowHide, buttonStyle, GUILayout.Width(200.0f * GuiDisplaySize.Offset)))
+ {
+ SelectKeyBindPopup.Show("Flight Show/Hide", KeyBinder.EditorShowHide, keyCode => KeyBinder.EditorShowHide = keyCode);
+ }
+ if (GUILayout.Button("Flight Show/Hide Key: " + KeyBinder.FlightShowHide, buttonStyle, GUILayout.Width(200.0f * GuiDisplaySize.Offset)))
+ {
+ SelectKeyBindPopup.Show("Flight Show/Hide", KeyBinder.FlightShowHide, keyCode => KeyBinder.FlightShowHide = keyCode);
+ }
+ GUILayout.EndHorizontal();
+
GUI.skin = null;
}
@@ -706,7 +712,7 @@
fontSize = (int)(11 * GuiDisplaySize.Offset),
fontStyle = FontStyle.Bold,
alignment = TextAnchor.MiddleCenter,
- stretchWidth = true,
+ stretchWidth = true
};
infoStyle = new GUIStyle(HighLogic.Skin.label)
@@ -884,6 +890,5 @@
Logger.Exception(ex, "BuildAdvanced.Window()");
}
}
- #endregion
}
}
--- a/KerbalEngineer/Extensions/OrbitExtensions.cs
+++ b/KerbalEngineer/Extensions/OrbitExtensions.cs
@@ -61,12 +61,15 @@
return 0.0;
}
- var angle = AngleHelper.GetAngleBetweenVectors(orbit.getRelativePositionAtUT(universalTime),
- Vector3d.Exclude(orbit.GetOrbitNormal(), orbit.referenceBody.orbit.getRelativePositionAtUT(universalTime)));
+ Vector3d orbitVector = orbit.getRelativePositionAtUT(universalTime);
+ orbitVector.z = 0.0;
- angle = AngleHelper.Clamp360(angle - 90.0);
+ Vector3d bodyVector = orbit.referenceBody.orbit.getOrbitalVelocityAtUT(universalTime);
+ bodyVector.z = 0.0;
- return orbit.inclination > 90.0 ? angle : 360.0 - angle;
+ double angle = AngleHelper.GetAngleBetweenVectors(bodyVector, orbitVector);
+
+ return AngleHelper.Clamp360(orbit.inclination < 90.0 ? angle : 360.0 - angle);
}
public static double GetAngleToRetrograde(this Orbit orbit)
@@ -81,12 +84,15 @@
return 0.0;
}
- var angle = AngleHelper.GetAngleBetweenVectors(orbit.getRelativePositionAtUT(universalTime),
- Vector3d.Exclude(orbit.GetOrbitNormal(), orbit.referenceBody.orbit.getRelativePositionAtUT(universalTime)));
+ Vector3d orbitVector = orbit.getRelativePositionAtUT(universalTime);
+ orbitVector.z = 0.0;
- angle = AngleHelper.Clamp360(angle + 90.0);
+ Vector3d bodyVector = orbit.referenceBody.orbit.getOrbitalVelocityAtUT(universalTime);
+ bodyVector.z = 0.0;
- return orbit.inclination > 90.0 ? angle : 360.0 - angle;
+ double angle = AngleHelper.GetAngleBetweenVectors(-bodyVector, orbitVector);
+
+ return AngleHelper.Clamp360(orbit.inclination < 90.0 ? angle : 360.0 - angle);
}
public static double GetAngleToTrueAnomaly(this Orbit orbit, double trueAnomaly)
--- a/KerbalEngineer/Flight/Readouts/Miscellaneous/Separator.cs
+++ b/KerbalEngineer/Flight/Readouts/Miscellaneous/Separator.cs
@@ -45,7 +45,7 @@
{
this.Name = "Separator";
this.Category = ReadoutCategory.GetCategory("Miscellaneous");
- this.HelpString = String.Empty;
+ this.HelpString = "Creats a line to help seperate subsections in a module.";
this.IsDefault = false;
this.Cloneable = true;
--- a/KerbalEngineer/Flight/Readouts/Miscellaneous/SystemTime.cs
+++ b/KerbalEngineer/Flight/Readouts/Miscellaneous/SystemTime.cs
@@ -40,7 +40,7 @@
{
this.Name = "System Time";
this.Category = ReadoutCategory.GetCategory("Miscellaneous");
- this.HelpString = String.Empty;
+ this.HelpString = "Shows the System Time in 12 hour format (AM/PM)";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Miscellaneous/TimeReference.cs
+++ /dev/null
@@ -1,66 +1,1 @@
-//
-// Kerbal Engineer Redux
-//
-// Copyright (C) 2014 CYBUTEK
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-#region Using Directives
-
-using System;
-
-using KerbalEngineer.Flight.Sections;
-using KerbalEngineer.Helpers;
-
-using UnityEngine;
-
-#endregion
-
-namespace KerbalEngineer.Flight.Readouts.Miscellaneous
-{
- public class TimeReference : ReadoutModule
- {
- #region Constructors
-
- public TimeReference()
- {
- this.Name = "Time Reference Adjuster";
- this.Category = ReadoutCategory.GetCategory("Miscellaneous");
- this.HelpString = String.Empty;
- this.IsDefault = false;
- }
-
- #endregion
-
- #region Methods: public
-
- public override void Draw(SectionModule section)
- {
- GUILayout.BeginHorizontal();
- GUILayout.Label("Time Ref.: " + TimeFormatter.Reference, this.NameStyle);
- if (GUILayout.Button("Earth", this.ButtonStyle))
- {
- TimeFormatter.SetReference();
- }
- if (GUILayout.Button("Kerbin", this.ButtonStyle))
- {
- TimeFormatter.SetReference(PSystemManager.Instance.localBodies.Find(body => body.bodyName.Equals("Kerbin")));
- }
- GUILayout.EndHorizontal();
- }
-
- #endregion
- }
-}
--- a/KerbalEngineer/Flight/Readouts/Orbital/AngleToEquatorialAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/AngleToEquatorialAscendingNode.cs
@@ -34,7 +34,7 @@
{
this.Name = "Angle to Equ. AN";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = string.Empty;
+ this.HelpString = "Angular Distance from the vessel to crossing the Equator of the central body, going north of it.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/AngleToEquatorialDescendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/AngleToEquatorialDescendingNode.cs
@@ -34,7 +34,7 @@
{
this.Name = "Angle to Equ. DN";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = string.Empty;
+ this.HelpString = "Angular Distance from the vessel to crossing the Equator of the central body, going south of it.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/AngleToPrograde.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/AngleToPrograde.cs
@@ -36,7 +36,7 @@
{
this.Name = "Angle to Prograde";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Angular Distance from the vessel to crossing the Orbit of the central body on it's retrograde side.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/AngleToRetrograde.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/AngleToRetrograde.cs
@@ -36,7 +36,7 @@
{
this.Name = "Angle to Retrograde";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Angular Distance from the vessel to crossing the Orbit of the central body on it's retrograde side.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ApoapsisHeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ApoapsisHeight.cs
@@ -34,7 +34,7 @@
{
this.Name = "Apoapsis Height";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = "Shows the vessel's apoapsis height relative to sea level. (Apoapsis is the highest point of an orbit.)";
+ this.HelpString = "Shows the vessel's apoapsis height relative to sea level. (Apoapsis is the highest point of an orbit.)";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/EccentricAnomaly.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/EccentricAnomaly.cs
@@ -1,7 +1,7 @@
//
// Kerbal Engineer Redux
//
-// Copyright (C) 2014 CYBUTEK
+// Copyright (C) 2015 CYBUTEK
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -17,38 +17,25 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
-#region Using Directives
-
-using System;
-
-using KerbalEngineer.Extensions;
-using KerbalEngineer.Flight.Sections;
-
-#endregion
-
namespace KerbalEngineer.Flight.Readouts.Orbital
{
+ using Extensions;
+ using Helpers;
+ using Sections;
+
public class EccentricAnomaly : ReadoutModule
{
- #region Constructors
-
public EccentricAnomaly()
{
- this.Name = "Eccentric Anomaly";
- this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
- this.IsDefault = false;
+ Name = "Eccentric Anomaly";
+ Category = ReadoutCategory.GetCategory("Orbital");
+ HelpString = string.Empty;
+ IsDefault = false;
}
-
- #endregion
-
- #region Methods: public
public override void Draw(SectionModule section)
{
- this.DrawLine(FlightGlobals.ship_orbit.eccentricAnomaly.ToAngle(), section.IsHud);
+ DrawLine((FlightGlobals.ship_orbit.eccentricAnomaly * Units.RAD_TO_DEG).ToAngle(), section.IsHud);
}
-
- #endregion
}
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/Inclination.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/Inclination.cs
@@ -34,7 +34,7 @@
{
this.Name = "Inclination";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = "Shows the vessel's orbital inclination.";
+ this.HelpString = "Shows the vessel's orbital inclination relative to the Equator.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeAngleToPrograde.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeAngleToPrograde.cs
@@ -36,7 +36,7 @@
{
this.Name = "Manoeuvre Node Angle to Prograde";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Angular Distance from the Node to crossing the Orbit of the central body on it's prograde side.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeAngleToRetrograde.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeAngleToRetrograde.cs
@@ -36,7 +36,7 @@
{
this.Name = "Manoeuvre Node Angle to Retrograde";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Angular Distance from the Node to crossing the Orbit of the central body on it's retrograde side.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeBurnTime.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeBurnTime.cs
@@ -36,7 +36,7 @@
{
this.Name = "Manoeuvre Node Burn Time";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "The burn's total duration.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeHalfBurnTime.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeHalfBurnTime.cs
@@ -36,7 +36,7 @@
{
this.Name = "Manoeuvre Node Half Burn Time";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Half of the burn's total duration.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeNormalDeltaV.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeNormalDeltaV.cs
@@ -36,7 +36,7 @@
{
this.Name = "Manoeuvre Node DeltaV (Normal)";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Normal component of the total change in velocity.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeProgradeDeltaV.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeProgradeDeltaV.cs
@@ -36,7 +36,7 @@
{
this.Name = "Manoeuvre Node DeltaV (Prograde)";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Prograde/Retrograde component of the total change in velocity.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeRadialDeltaV.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeRadialDeltaV.cs
@@ -36,7 +36,7 @@
{
this.Name = "Manoeuvre Node DeltaV (Radial)";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Radial component of the total change in velocity.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeTimeToHalfBurn.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeTimeToHalfBurn.cs
@@ -36,7 +36,7 @@
{
this.Name = "Time to Manoeuvre Burn";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Time until the Manoeuvre should be started.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeTimeToManoeuvre.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeTimeToManoeuvre.cs
@@ -36,7 +36,7 @@
{
this.Name = "Time to Manoeuvre Node";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Time until the vessel reaches the position of the Manoeuvre Node.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeTotalDeltaV.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/NodeTotalDeltaV.cs
@@ -36,7 +36,7 @@
{
this.Name = "Manoeuvre Node DeltaV (Total)";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Total change in velocity during the burn.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/PostBurnApoapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/PostBurnApoapsis.cs
@@ -36,7 +36,7 @@
{
this.Name = "Post-burn Apoapsis";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Farthest point of the vessel's ofbit after the burn.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/PostBurnPeriapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ManoeuvreNode/PostBurnPeriapsis.cs
@@ -36,7 +36,7 @@
{
this.Name = "Post-burn Periapsis";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
+ this.HelpString = "Closest point of the vessel's ofbit after the burn.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/MeanAnomaly.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/MeanAnomaly.cs
@@ -1,7 +1,7 @@
//
// Kerbal Engineer Redux
//
-// Copyright (C) 2014 CYBUTEK
+// Copyright (C) 2015 CYBUTEK
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -17,38 +17,25 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
-#region Using Directives
-
-using System;
-
-using KerbalEngineer.Extensions;
-using KerbalEngineer.Flight.Sections;
-
-#endregion
-
namespace KerbalEngineer.Flight.Readouts.Orbital
{
+ using Extensions;
+ using Helpers;
+ using Sections;
+
public class MeanAnomaly : ReadoutModule
{
- #region Constructors
-
public MeanAnomaly()
{
- this.Name = "Mean Anomaly";
- this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
- this.IsDefault = false;
+ Name = "Mean Anomaly";
+ Category = ReadoutCategory.GetCategory("Orbital");
+ HelpString = string.Empty;
+ IsDefault = false;
}
-
- #endregion
-
- #region Methods: public
public override void Draw(SectionModule section)
{
- this.DrawLine(FlightGlobals.ship_orbit.meanAnomaly.ToAngle(), section.IsHud);
+ DrawLine((FlightGlobals.ship_orbit.meanAnomaly * Units.RAD_TO_DEG).ToAngle(), section.IsHud);
}
-
- #endregion
}
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/MeanAnomalyAtEpoc.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/MeanAnomalyAtEpoc.cs
@@ -1,7 +1,7 @@
//
// Kerbal Engineer Redux
//
-// Copyright (C) 2014 CYBUTEK
+// Copyright (C) 2015 CYBUTEK
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -17,38 +17,25 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
-#region Using Directives
-
-using System;
-
-using KerbalEngineer.Extensions;
-using KerbalEngineer.Flight.Sections;
-
-#endregion
-
namespace KerbalEngineer.Flight.Readouts.Orbital
{
+ using Extensions;
+ using Helpers;
+ using Sections;
+
public class MeanAnomalyAtEpoc : ReadoutModule
{
- #region Constructors
-
public MeanAnomalyAtEpoc()
{
- this.Name = "Mean Anomaly at Epoc";
- this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = String.Empty;
- this.IsDefault = false;
+ Name = "Mean Anomaly at Epoc";
+ Category = ReadoutCategory.GetCategory("Orbital");
+ HelpString = string.Empty;
+ IsDefault = false;
}
-
- #endregion
-
- #region Methods: public
public override void Draw(SectionModule section)
{
- this.DrawLine(FlightGlobals.ship_orbit.meanAnomalyAtEpoch.ToAngle(), section.IsHud);
+ DrawLine((FlightGlobals.ship_orbit.meanAnomalyAtEpoch * Units.RAD_TO_DEG).ToAngle(), section.IsHud);
}
-
- #endregion
}
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/PeriapsisHeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/PeriapsisHeight.cs
@@ -34,7 +34,7 @@
{
this.Name = "Periapsis Height";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = "Shows the vessel's periapsis height relative to sea level. (Periapsis is the lowest point of an orbit.";
+ this.HelpString = "Shows the vessel's periapsis height relative to sea level. (Periapsis is the lowest point of an orbit.)";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/TimeToAtmosphere.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/TimeToAtmosphere.cs
@@ -37,7 +37,7 @@
{
this.Name = "Time to Atmosphere";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = "Shows the time until the vessel enters or leaves atmosphere.";
+ this.HelpString = "Shows the time until the vessel enters or leaves the atmosphere.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/TimeToEquatorialAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/TimeToEquatorialAscendingNode.cs
@@ -35,7 +35,7 @@
{
this.Name = "Time to Equ. AN";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the time until the vessel corsses the Equator, going north of it.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Orbital/TimeToEquatorialDescendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/TimeToEquatorialDescendingNode.cs
@@ -35,7 +35,7 @@
{
this.Name = "Time to Equ. DN";
this.Category = ReadoutCategory.GetCategory("Orbital");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the time until the vessel corsses the Equator, going south of it.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/ReadoutLibrary.cs
+++ b/KerbalEngineer/Flight/Readouts/ReadoutLibrary.cs
@@ -190,7 +190,6 @@
readouts.Add(new Separator());
readouts.Add(new GuiSizeAdjustor());
readouts.Add(new SimulationDelay());
- readouts.Add(new TimeReference());
readouts.Add(new VectoredThrustToggle());
readouts.Add(new SystemTime());
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/AltitudeSeaLevel.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/AltitudeSeaLevel.cs
@@ -34,7 +34,7 @@
{
this.Name = "Altitude (Sea Level)";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the target's altitude above sea level.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeAscendingNode.cs
@@ -34,7 +34,7 @@
{
this.Name = "Angle to Rel. AN";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Angular Distance from the vessel to crossing the orbit of the target object, going north of it.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeDescendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeDescendingNode.cs
@@ -34,7 +34,7 @@
{
this.Name = "Angle to Rel. DN";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Angular Distance from the vessel to crossing the orbit of the target object, going south of it.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/ApoapsisHeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/ApoapsisHeight.cs
@@ -34,7 +34,7 @@
{
this.Name = "Apoapsis Height";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the targets's apoapsis height relative to sea level. (Apoapsis is the highest point of an orbit.)";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/Distance.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/Distance.cs
@@ -34,7 +34,7 @@
{
this.Name = "Distance";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Current distance between the vessel and the target object.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/OrbitalPeriod.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/OrbitalPeriod.cs
@@ -34,7 +34,7 @@
{
this.Name = "Orbital Period";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the amount of time it will take the target object to complete a full orbit.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/PeriapsisHeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/PeriapsisHeight.cs
@@ -34,7 +34,7 @@
{
this.Name = "Periapsis Height";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the targets's periapsis height relative to sea level. (Periapsis is the lowest point of an orbit.)";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/PhaseAngle.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/PhaseAngle.cs
@@ -34,7 +34,7 @@
{
this.Name = "Phase Angle";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Angular distance of the vessel relative to the target object.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/SemiMajorAxis.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/SemiMajorAxis.cs
@@ -36,7 +36,7 @@
{
this.Name = "Semi-major Axis";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = String.Empty;
+ this.HelpString = "Shows the distance from the centre of the target's orbit to the farthest edge.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/SemiMinorAxis.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/SemiMinorAxis.cs
@@ -36,7 +36,7 @@
{
this.Name = "Semi-minor Axis";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = String.Empty;
+ this.HelpString = "Shows the distance from the centre of the target's orbit to the nearest edge.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToApoapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToApoapsis.cs
@@ -34,7 +34,7 @@
{
this.Name = "Time to Apoapsis";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the time until the target reaches apoapsis, the highest point of the orbit.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToPeriapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToPeriapsis.cs
@@ -34,7 +34,7 @@
{
this.Name = "Time to Periapsis";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the time until the target reaches periapsis, the lowest point of the orbit.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeAscendingNode.cs
@@ -34,7 +34,7 @@
{
this.Name = "Time to Rel. AN";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Time until the vessel crosses the target's orbit, going north.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeDescendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeDescendingNode.cs
@@ -34,7 +34,7 @@
{
this.Name = "Time to Rel. DN";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = string.Empty;
+ this.HelpString = "Time until the vessel crosses the target's orbit, going south.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRendezvous.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRendezvous.cs
@@ -34,7 +34,7 @@
{
this.Name = "Time to Rendezvous";
this.Category = ReadoutCategory.GetCategory("Rendezvous");
- this.HelpString = "Approximate (linearly) time to the minimum distance between objects";
+ this.HelpString = "Approximate (linearly) time to the minimum distance between objects.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactAltitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactAltitude.cs
@@ -34,7 +34,7 @@
{
this.Name = "Impact Altitude";
this.Category = ReadoutCategory.GetCategory("Surface");
- this.HelpString = string.Empty;
+ this.HelpString = "Altitude at which the Vessel will impact.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactBiome.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactBiome.cs
@@ -33,7 +33,7 @@
{
this.Name = "Impact Biome";
this.Category = ReadoutCategory.GetCategory("Surface");
- this.HelpString = string.Empty;
+ this.HelpString = "Biome the Vessel will impact in.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactLatitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactLatitude.cs
@@ -34,7 +34,7 @@
{
this.Name = "Impact Latitude";
this.Category = ReadoutCategory.GetCategory("Surface");
- this.HelpString = string.Empty;
+ this.HelpString = "Latitude of the impact position.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactLongitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactLongitude.cs
@@ -34,7 +34,7 @@
{
this.Name = "Impact Longitude";
this.Category = ReadoutCategory.GetCategory("Surface");
- this.HelpString = string.Empty;
+ this.HelpString = "Longditude of the impact position.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactTime.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactTime.cs
@@ -34,7 +34,7 @@
{
this.Name = "Impact Time";
this.Category = ReadoutCategory.GetCategory("Surface");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows time until the vessel impacts the central object.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Surface/Latitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/Latitude.cs
@@ -34,7 +34,7 @@
{
this.Name = "Latitude";
this.Category = ReadoutCategory.GetCategory("Surface");
- this.HelpString = "Shows the vessel's latitude position around the celestial body. Latitude is the angle from the equator to poles.";
+ this.HelpString = "Shows the vessel's latitude position around the celestial body. Latitude is the angle from the equator to poles.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Surface/Longitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/Longitude.cs
@@ -28,7 +28,7 @@
{
Name = "Longitude";
Category = ReadoutCategory.GetCategory("Surface");
- HelpString = "Shows the vessel's longitude around a celestial body. Longitude is the angle from the bodies prime meridian.";
+ HelpString = "Shows the vessel's longitude around a celestial body. Longitude is the angle from the bodies prime meridian.";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Surface/Situation.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/Situation.cs
@@ -33,7 +33,7 @@
{
this.Name = "Situation";
this.Category = ReadoutCategory.GetCategory("Surface");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the vessel's current scientific situation. (Landed, Splashed, Flying Low/High, In Space Low/High)";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Thermal/CoolestPart.cs
+++ b/KerbalEngineer/Flight/Readouts/Thermal/CoolestPart.cs
@@ -27,7 +27,7 @@
{
Name = "Coolest Part";
Category = ReadoutCategory.GetCategory("Thermal");
- HelpString = string.Empty;
+ HelpString = "The part of the vessel that is enduring the lowest temperature.";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Thermal/CoolestSkinTemperature.cs
+++ b/KerbalEngineer/Flight/Readouts/Thermal/CoolestSkinTemperature.cs
@@ -28,7 +28,7 @@
{
Name = "Coolest Skin Temperature";
Category = ReadoutCategory.GetCategory("Thermal");
- HelpString = string.Empty;
+ HelpString = "Lowest external Temperature on the Vessel.";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Thermal/CoolestTemperature.cs
+++ b/KerbalEngineer/Flight/Readouts/Thermal/CoolestTemperature.cs
@@ -28,7 +28,7 @@
{
Name = "Coolest Temperature";
Category = ReadoutCategory.GetCategory("Thermal");
- HelpString = string.Empty;
+ HelpString = "Lowest internal Temperature on the Vessel.";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Thermal/CriticalPart.cs
+++ b/KerbalEngineer/Flight/Readouts/Thermal/CriticalPart.cs
@@ -27,7 +27,7 @@
{
Name = "Critical Part";
Category = ReadoutCategory.GetCategory("Thermal");
- HelpString = string.Empty;
+ HelpString = "This part is structually most critical. If it endures too high temperature there is a high chance for major structual failure!";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Thermal/CriticalSkinTemperature.cs
+++ b/KerbalEngineer/Flight/Readouts/Thermal/CriticalSkinTemperature.cs
@@ -28,7 +28,7 @@
{
Name = "Critical Skin Temperature";
Category = ReadoutCategory.GetCategory("Thermal");
- HelpString = string.Empty;
+ HelpString = "Highest external Temperature on the part of the Vessel that is structually most critical.";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Thermal/CriticalTemperature.cs
+++ b/KerbalEngineer/Flight/Readouts/Thermal/CriticalTemperature.cs
@@ -28,7 +28,7 @@
{
Name = "Critical Temperature";
Category = ReadoutCategory.GetCategory("Thermal");
- HelpString = string.Empty;
+ HelpString = "Internal Temperature on the part of the Vessel that is structually most critical.";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Thermal/CriticalThermalPercentage.cs
+++ b/KerbalEngineer/Flight/Readouts/Thermal/CriticalThermalPercentage.cs
@@ -28,7 +28,7 @@
{
Name = "Critical Thermal Percentage";
Category = ReadoutCategory.GetCategory("Thermal");
- HelpString = string.Empty;
+ HelpString = "Shows how high a temperature the critical Part is enduring relative to it's maximal temperature.";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Thermal/HottestPart.cs
+++ b/KerbalEngineer/Flight/Readouts/Thermal/HottestPart.cs
@@ -27,7 +27,7 @@
{
Name = "Hottest Part";
Category = ReadoutCategory.GetCategory("Thermal");
- HelpString = string.Empty;
+ HelpString = "The part of the vessel that is enduring the highest temperature.";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Thermal/HottestSkinTemperature.cs
+++ b/KerbalEngineer/Flight/Readouts/Thermal/HottestSkinTemperature.cs
@@ -28,7 +28,7 @@
{
Name = "Hottest Skin Temperature";
Category = ReadoutCategory.GetCategory("Thermal");
- HelpString = string.Empty;
+ HelpString = "Highest external Temperature on the Vessel.";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Thermal/HottestTemperature.cs
+++ b/KerbalEngineer/Flight/Readouts/Thermal/HottestTemperature.cs
@@ -28,7 +28,7 @@
{
Name = "Hottest Temperature";
Category = ReadoutCategory.GetCategory("Thermal");
- HelpString = string.Empty;
+ HelpString = "Highest internal Temperature on the Vessel.";
IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/Acceleration.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/Acceleration.cs
@@ -34,7 +34,7 @@
{
this.Name = "Acceleration";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the current and maximum acceleration of the craft.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/AttitudeProcessor.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/AttitudeProcessor.cs
@@ -110,8 +110,8 @@
? 360.0f - this.surfaceRotation.eulerAngles.x
: -this.surfaceRotation.eulerAngles.x;
this.roll = this.surfaceRotation.eulerAngles.z > 180.0f
- ? this.surfaceRotation.eulerAngles.z - 360.0f
- : this.surfaceRotation.eulerAngles.z;
+ ? 360.0f - this.surfaceRotation.eulerAngles.z
+ : -this.surfaceRotation.eulerAngles.z;
this.headingRate = this.heading - this.previousHeading;
this.pitchRate = this.pitch - this.previousPitch;
--- a/KerbalEngineer/Flight/Readouts/Vessel/Heading.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/Heading.cs
@@ -34,7 +34,7 @@
{
this.Name = "Heading";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the current Heading.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/HeadingRate.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/HeadingRate.cs
@@ -34,7 +34,7 @@
{
this.Name = "Heading Rate";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the current change in Heading.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirDemand.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirDemand.cs
@@ -39,7 +39,7 @@
{
this.Name = "Intake Air (Demand)";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Displays the Amount of Intake Air required.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirDemandSupply.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirDemandSupply.cs
@@ -42,7 +42,7 @@
{
this.Name = "Intake Air (D/S)";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Displays the Ration between required and available Intake Air.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirSupply.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirSupply.cs
@@ -39,7 +39,7 @@
{
this.Name = "Intake Air (Supply)";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Displays the available Intake Air.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirUsage.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirUsage.cs
@@ -42,7 +42,7 @@
{
this.Name = "Intake Air (Usage)";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Displays the consumption of Intake Air.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/Mass.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/Mass.cs
@@ -34,7 +34,7 @@
{
this.Name = "Mass";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Displays the total Mass of the Vessel.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/PartCount.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/PartCount.cs
@@ -34,7 +34,7 @@
{
this.Name = "Part Count";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the total number of Parts the current and next stage.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/Pitch.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/Pitch.cs
@@ -34,7 +34,7 @@
{
this.Name = "Pitch";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the current Pitch angle.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/PitchRate.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/PitchRate.cs
@@ -34,7 +34,7 @@
{
this.Name = "Pitch Rate";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the current Pitch speed.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/Roll.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/Roll.cs
@@ -34,7 +34,7 @@
{
this.Name = "Roll";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the current Roll angle.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/RollRate.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/RollRate.cs
@@ -34,7 +34,7 @@
{
this.Name = "Roll Rate";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the current Roll speed.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/SpecificImpulse.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/SpecificImpulse.cs
@@ -33,7 +33,7 @@
{
this.Name = "Specific Impulse";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the average Specific Impulse of all engines in the current stage.";
this.IsDefault = false;
}
--- a/KerbalEngineer/Flight/Readouts/Vessel/Thrust.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/Thrust.cs
@@ -34,7 +34,7 @@
{
this.Name = "Thrust";
this.Category = ReadoutCategory.GetCategory("Vessel");
- this.HelpString = string.Empty;
+ this.HelpString = "Shows the current and maximum thrust the vessel can put out.";
this.IsDefault = true;
}
--- a/KerbalEngineer/Helpers/TimeFormatter.cs
+++ b/KerbalEngineer/Helpers/TimeFormatter.cs
@@ -1,7 +1,5 @@
//
-// Kerbal Engineer Redux
-//
-// Copyright (C) 2014 CYBUTEK
+// Copyright (C) 2015 CYBUTEK
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -17,139 +15,46 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
-#region Using Directives
-
-using System;
-
-using KerbalEngineer.Settings;
-
-#endregion
-
namespace KerbalEngineer.Helpers
{
public static class TimeFormatter
{
- #region Constructors
-
- static TimeFormatter()
- {
- SetReference(false);
- Load();
- }
-
- #endregion
-
- #region Properties
-
- public static string Reference { get; set; }
-
- public static double SecondsPerDay { get; set; }
-
- public static double SecondsPerHour { get; set; }
-
- public static double SecondsPerMinute { get; set; }
-
- public static double SecondsPerYear { get; set; }
-
- #endregion
-
- #region Methods: public
-
public static string ConvertToString(double seconds, string format = "F1")
{
- var years = 0;
- var days = 0;
- var hours = 0;
- var minutes = 0;
+ int years = 0;
+ int days = 0;
+ int hours = 0;
+ int minutes = 0;
- if (seconds > 0)
+ if (seconds > 0.0)
{
- years = (int)(seconds / SecondsPerYear);
- seconds -= years * SecondsPerYear;
+ years = (int)(seconds / KSPUtil.Year);
+ seconds -= years * KSPUtil.Year;
- days = (int)(seconds / SecondsPerDay);
- seconds -= days * SecondsPerDay;
+ days = (int)(seconds / KSPUtil.Day);
+ seconds -= days * KSPUtil.Day;
- hours = (int)(seconds / SecondsPerHour);
- seconds -= hours * SecondsPerHour;
+ hours = (int)(seconds / 3600.0);
+ seconds -= hours * 3600.0;
- minutes = (int)(seconds / SecondsPerMinute);
- seconds -= minutes * SecondsPerMinute;
+ minutes = (int)(seconds / 60.0);
+ seconds -= minutes * 60.0;
}
if (years > 0)
{
- return String.Format("{0}y {1}d {2}h {3}m {4}s", years, days, hours, minutes, seconds.ToString(format));
+ return string.Format("{0}y {1}d {2}h {3}m {4}s", years, days, hours, minutes, seconds.ToString(format));
}
if (days > 0)
{
- return String.Format("{0}d {1}h {2}m {3}s", days, hours, minutes, seconds.ToString(format));
+ return string.Format("{0}d {1}h {2}m {3}s", days, hours, minutes, seconds.ToString(format));
}
if (hours > 0)
{
- return String.Format("{0}h {1}m {2}s", hours, minutes, seconds.ToString(format));
+ return string.Format("{0}h {1}m {2}s", hours, minutes, seconds.ToString(format));
}
- return minutes > 0 ? String.Format("{0}m {1}s", minutes, seconds.ToString(format)) : String.Format("{0}s", seconds.ToString(format));
+ return minutes > 0 ? string.Format("{0}m {1}s", minutes, seconds.ToString(format)) : string.Format("{0}s", seconds.ToString(format));
}
-
- public static void Load()
- {
- var handler = SettingHandler.Load("TimeFormatter.xml");
- SecondsPerMinute = handler.Get("SecondsPerMinute", SecondsPerMinute);
- SecondsPerHour = handler.Get("SecondsPerHour", SecondsPerHour);
- SecondsPerDay = handler.Get("SecondsPerDay", SecondsPerDay);
- SecondsPerYear = handler.Get("SecondsPerYear", SecondsPerYear);
- Reference = handler.Get("Reference", Reference);
- }
-
- public static void Save()
- {
- var handler = SettingHandler.Load("TimeFormatter.xml");
- handler.Set("SecondsPerMinute", SecondsPerMinute);
- handler.Set("SecondsPerHour", SecondsPerHour);
- handler.Set("SecondsPerDay", SecondsPerDay);
- handler.Set("SecondsPerYear", SecondsPerYear);
- handler.Set("Reference", Reference);
- handler.Save("TimeFormatter.xml");
- }
-
- public static void SetReference(bool save = true)
- {
- const double minute = 60.0;
- const double hour = minute * 60.0;
- const double day = hour * 24.0;
- const double year = day * 365.0;
- SetReference(minute, hour, day, year, "Earth", save);
- }
-
- public static void SetReference(CelestialBody body, bool save = true)
- {
- SetReference(SecondsPerMinute, SecondsPerHour, body.rotationPeriod, body.orbit.period, body.bodyName, save);
- }
-
- public static void SetReference(double minute, double hour, double day, double year, string reference, bool save = true)
- {
- SecondsPerMinute = minute;
- SecondsPerHour = hour;
- SecondsPerDay = day;
- SecondsPerYear = year;
- Reference = reference;
-
- if (save)
- {
- Save();
- }
- }
-
- public new static string ToString()
- {
- return String.Format("SecondsPerMinute: {0}", SecondsPerMinute) + Environment.NewLine +
- String.Format("SecondsPerHour: {0}", SecondsPerHour) + Environment.NewLine +
- String.Format("SecondsPerDay: {0}", SecondsPerDay) + Environment.NewLine +
- String.Format("SecondsPerYear: {0}", SecondsPerYear) + Environment.NewLine;
- }
-
- #endregion
}
}
--- a/KerbalEngineer/Helpers/Units.cs
+++ b/KerbalEngineer/Helpers/Units.cs
@@ -24,6 +24,8 @@
public static class Units
{
public const double GRAVITY = 9.80665;
+ public const double RAD_TO_DEG = 180.0 / Math.PI;
+ public const double DEG_TO_RAD = Math.PI / 180.0;
public static string Concat(int value1, int value2)
{
@@ -91,7 +93,7 @@
int min = (int)Math.Floor(rem * 60);
rem -= ((double)min / 60);
int sec = (int)Math.Floor(rem * 3600);
- return String.Format("{0:0}° {1:00}' {2:00}\"", deg, min, sec);
+ return string.Format("{0:0}° {1:00}' {2:00}\"", deg, min, sec);
}
public static string ToDistance(double value, int decimals = 1)
@@ -130,13 +132,13 @@
public static string ToForce(double value)
{
- return value.ToString((value < 100000.0) ? (value < 10000.0) ? (value < 100.0) ? (Math.Abs(value) < Double.Epsilon) ? "N0" : "N3" : "N2" : "N1" : "N0") + "kN";
+ return value.ToString((value < 100000.0) ? (value < 10000.0) ? (value < 100.0) ? (Math.Abs(value) < double.Epsilon) ? "N0" : "N3" : "N2" : "N1" : "N0") + "kN";
}
public static string ToForce(double value1, double value2)
{
- string format1 = (value1 < 100000.0) ? (value1 < 10000.0) ? (value1 < 100.0) ? (Math.Abs(value1) < Double.Epsilon) ? "N0" : "N3" : "N2" : "N1" : "N0";
- string format2 = (value2 < 100000.0) ? (value2 < 10000.0) ? (value2 < 100.0) ? (Math.Abs(value2) < Double.Epsilon) ? "N0" : "N3" : "N2" : "N1" : "N0";
+ string format1 = (value1 < 100000.0) ? (value1 < 10000.0) ? (value1 < 100.0) ? (Math.Abs(value1) < double.Epsilon) ? "N0" : "N3" : "N2" : "N1" : "N0";
+ string format2 = (value2 < 100000.0) ? (value2 < 10000.0) ? (value2 < 100.0) ? (Math.Abs(value2) < double.Epsilon) ? "N0" : "N3" : "N2" : "N1" : "N0";
return value1.ToString(format1) + " / " + value2.ToString(format2) + "kN";
}
@@ -205,7 +207,7 @@
public static string ToTorque(double value)
{
- return value.ToString((value < 100.0) ? (Math.Abs(value) < Double.Epsilon) ? "N0" : "N2" : "N0") + "kNm";
+ return value.ToString((value < 100.0) ? (Math.Abs(value) < double.Epsilon) ? "N0" : "N2" : "N0") + "kNm";
}
}
}
--- a/KerbalEngineer/KerbalEngineer.csproj
+++ b/KerbalEngineer/KerbalEngineer.csproj
@@ -53,7 +53,6 @@
<Compile Include="Flight\Presets\Preset.cs" />
<Compile Include="Flight\Readouts\Miscellaneous\SystemTime.cs" />
<Compile Include="Flight\Readouts\Miscellaneous\VectoredThrustToggle.cs" />
- <Compile Include="Flight\Readouts\Miscellaneous\TimeReference.cs" />
<Compile Include="Flight\Readouts\Miscellaneous\Separator.cs" />
<Compile Include="Flight\Readouts\Miscellaneous\GuiSizeAdjustor.cs" />
<Compile Include="Flight\Readouts\Orbital\AngleToEquatorialDescendingNode.cs" />
@@ -222,6 +221,7 @@
<Compile Include="Settings\SettingHandler.cs" />
<Compile Include="Settings\SettingItem.cs" />
<Compile Include="TapeDriveAnimator.cs" />
+ <Compile Include="UIControls\SelectKeyBindPopup.cs" />
<Compile Include="UIControls\WindowObject.cs" />
<Compile Include="VesselSimulator\AttachNodeSim.cs" />
<Compile Include="VesselSimulator\EngineSim.cs" />
--- /dev/null
+++ b/KerbalEngineer/UIControls/SelectKeyBindPopup.cs
@@ -1,1 +1,189 @@
+//
+// Kerbal Engineer Redux
+//
+// Copyright (C) 2015 CYBUTEK
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+namespace KerbalEngineer.UIControls
+{
+ using System;
+ using UnityEngine;
+
+ public class SelectKeyBindPopup : MonoBehaviour
+ {
+ private readonly Array availableBindings = Enum.GetValues(typeof(KeyCode));
+ private bool isCentred;
+ private Rect position = new Rect(0.0f, 0.0f, 250.0f, 0.0f);
+
+ /// <summary>
+ /// Gets whether a key bind popup is already open.
+ /// </summary>
+ public static bool IsOpen { get; private set; }
+
+ /// <summary>
+ /// Gets the delegate to be invoked when accepted button is clicked.
+ /// </summary>
+ public Action<KeyCode> AcceptClicked { get; private set; }
+
+ /// <summary>
+ /// Gets the name of the binding to change.
+ /// </summary>
+ public string Name { get; private set; }
+
+ /// <summary>
+ /// Gets the selected binding.
+ /// </summary>
+ public KeyCode Binding { get; private set; }
+
+ /// <summary>
+ /// Shows a key bind popup allowing the user to select a key for binding.
+ /// </summary>
+ public static void Show(string name, KeyCode currentBinding, Action<KeyCode> acceptClicked)
+ {
+ if (IsOpen)
+ {
+ return;
+ }
+
+ SelectKeyBindPopup selectKeyBindPopup = new GameObject("SelectKeyBind").AddComponent<SelectKeyBindPopup>();
+ selectKeyBindPopup.Name = name;
+ selectKeyBindPopup.Binding = currentBinding;
+ selectKeyBindPopup.AcceptClicked = acceptClicked;
+ }
+
+ /// <summary>
+ /// Handles the accept button click event.
+ /// </summary>
+ public void OnAccept()
+ {
+ if (AcceptClicked != null)
+ {
+ AcceptClicked.Invoke(Binding);
+ }
+ Destroy(gameObject);
+ }
+
+ /// <summary>
+ /// Handles the cancel button click event.
+ /// </summary>
+ public void OnCancel()
+ {
+ Destroy(gameObject);
+ }
+
+ /// <summary>
+ /// Called by unity when the component is created.
+ /// </summary>
+ protected virtual void Awake()
+ {
+ if (IsOpen)
+ {
+ OnCancel();
+ }
+ else
+ {
+ IsOpen = true;
+ }
+ }
+
+ /// <summary>
+ /// Called by unity when the component is destroyed.
+ /// </summary>
+ protected virtual void OnDestroy()
+ {
+ IsOpen = false;
+ }
+
+ /// <summary>
+ /// Called by unity each frame to render the GUI.
+ /// </summary>
+ protected virtual void OnGUI()
+ {
+ position = GUILayout.Window(GetInstanceID(), position, RenderWindow, "Select Key Bind", HighLogic.Skin.window);
+ CentreWindow();
+ }
+
+ /// <summary>
+ /// Called by unity every frame.
+ /// </summary>
+ protected virtual void Update()
+ {
+ CentreWindow();
+ UpdateBinding();
+ }
+
+ /// <summary>
+ /// Centres the window on the screen.
+ /// </summary>
+ private void CentreWindow()
+ {
+ if (isCentred == false && position.width > 0.0f && position.height > 0.0f)
+ {
+ isCentred = true;
+ position.center = new Vector2(Screen.width * 0.5f, Screen.height * 0.5f);
+ }
+ }
+
+ /// <summary>
+ /// Renders the window content.
+ /// </summary>
+ private void RenderWindow(int id)
+ {
+ // Binding labels.
+ GUILayout.BeginVertical(HighLogic.Skin.textArea);
+ GUILayout.Label("Key Bind: " + Name);
+ GUILayout.Label("Selected: " + Binding);
+ GUILayout.EndVertical();
+
+ // Window buttons.
+ GUILayout.BeginHorizontal();
+ if (GUILayout.Button("Cancel", HighLogic.Skin.button))
+ {
+ OnCancel();
+ }
+
+ if (GUILayout.Button("Accept", HighLogic.Skin.button))
+ {
+ OnAccept();
+ }
+ GUILayout.EndHorizontal();
+
+ // Make the window to be draggable.
+ GUI.DragWindow();
+ }
+
+ /// <summary>
+ /// Updates the binding selected by the user.
+ /// </summary>
+ private void UpdateBinding()
+ {
+ for (int i = 0; i < availableBindings.Length; ++i)
+ {
+ KeyCode keyCode = (KeyCode)availableBindings.GetValue(i);
+
+ if (keyCode == KeyCode.Mouse0)
+ {
+ continue;
+ }
+
+ if (Input.GetKeyDown(keyCode))
+ {
+ Binding = keyCode;
+ }
+ }
+ }
+ }
+}
Binary files a/Output/KerbalEngineer/KerbalEngineer.dll and b/Output/KerbalEngineer/KerbalEngineer.dll differ