Added relative inclination.
[VesselSimulator.git] / KerbalEngineer / Flight / Readouts / ReadoutLibrary.cs
blob:a/KerbalEngineer/Flight/Readouts/ReadoutLibrary.cs -> blob:b/KerbalEngineer/Flight/Readouts/ReadoutLibrary.cs
// Project: KerbalEngineer // Project: KerbalEngineer
// Author: CYBUTEK // Author: CYBUTEK
// License: Attribution-NonCommercial-ShareAlike 3.0 Unported // License: Attribution-NonCommercial-ShareAlike 3.0 Unported
#region Using Directives #region Using Directives
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using KerbalEngineer.Flight.Readouts.Orbital; using KerbalEngineer.Flight.Readouts.Orbital;
using KerbalEngineer.Flight.Readouts.Rendezvous; using KerbalEngineer.Flight.Readouts.Rendezvous;
using KerbalEngineer.Flight.Readouts.Surface; using KerbalEngineer.Flight.Readouts.Surface;
using KerbalEngineer.Flight.Readouts.Vessel; using KerbalEngineer.Flight.Readouts.Vessel;
using KerbalEngineer.Settings; using KerbalEngineer.Settings;
#endregion #endregion
namespace KerbalEngineer.Flight.Readouts namespace KerbalEngineer.Flight.Readouts
{ {
public class ReadoutLibrary public class ReadoutLibrary
{ {
#region Instance #region Instance
private static readonly ReadoutLibrary instance = new ReadoutLibrary(); private static readonly ReadoutLibrary instance = new ReadoutLibrary();
/// <summary> /// <summary>
/// Gets the current instance of the readout library. /// Gets the current instance of the readout library.
/// </summary> /// </summary>
public static ReadoutLibrary Instance public static ReadoutLibrary Instance
{ {
get { return instance; } get { return instance; }
} }
#endregion #endregion
#region Fields #region Fields
private List<ReadoutModule> readoutModules = new List<ReadoutModule>(); private List<ReadoutModule> readoutModules = new List<ReadoutModule>();
#endregion #endregion
#region Constructors #region Constructors
/// <summary> /// <summary>
/// Sets up and populates the readout library with the stock readouts. /// Sets up and populates the readout library with the stock readouts.
/// </summary> /// </summary>
private ReadoutLibrary() private ReadoutLibrary()
{ {
// Orbital // Orbital
this.readoutModules.Add(new ApoapsisHeight()); this.readoutModules.Add(new ApoapsisHeight());
this.readoutModules.Add(new PeriapsisHeight()); this.readoutModules.Add(new PeriapsisHeight());
this.readoutModules.Add(new TimeToApoapsis()); this.readoutModules.Add(new TimeToApoapsis());
this.readoutModules.Add(new TimeToPeriapsis()); this.readoutModules.Add(new TimeToPeriapsis());
this.readoutModules.Add(new Inclination()); this.readoutModules.Add(new Inclination());
this.readoutModules.Add(new Eccentricity()); this.readoutModules.Add(new Eccentricity());
this.readoutModules.Add(new OrbitalSpeed()); this.readoutModules.Add(new OrbitalSpeed());
this.readoutModules.Add(new OrbitalPeriod()); this.readoutModules.Add(new OrbitalPeriod());
this.readoutModules.Add(new LongitudeOfAscendingNode()); this.readoutModules.Add(new LongitudeOfAscendingNode());
this.readoutModules.Add(new LongitudeOfPeriapsis()); this.readoutModules.Add(new LongitudeOfPeriapsis());
this.readoutModules.Add(new SemiMajorAxis()); this.readoutModules.Add(new SemiMajorAxis());
this.readoutModules.Add(new SemiMinorAxis()); this.readoutModules.Add(new SemiMinorAxis());
// Surface // Surface
this.readoutModules.Add(new AltitudeSeaLevel()); this.readoutModules.Add(new AltitudeSeaLevel());
this.readoutModules.Add(new AltitudeTerrain()); this.readoutModules.Add(new AltitudeTerrain());
this.readoutModules.Add(new VerticalSpeed()); this.readoutModules.Add(new VerticalSpeed());
this.readoutModules.Add(new HorizontalSpeed()); this.readoutModules.Add(new HorizontalSpeed());
this.readoutModules.Add(new Longitude()); this.readoutModules.Add(new Longitude());
this.readoutModules.Add(new Latitude()); this.readoutModules.Add(new Latitude());
this.readoutModules.Add(new GeeForce()); this.readoutModules.Add(new GeeForce());
this.readoutModules.Add(new TerminalVelocity()); this.readoutModules.Add(new TerminalVelocity());
this.readoutModules.Add(new AtmosphericEfficiency()); this.readoutModules.Add(new AtmosphericEfficiency());
// Vessel // Vessel
this.readoutModules.Add(new DeltaVStaged()); this.readoutModules.Add(new DeltaVStaged());
this.readoutModules.Add(new DeltaVTotal()); this.readoutModules.Add(new DeltaVTotal());
this.readoutModules.Add(new SpecificImpulse()); this.readoutModules.Add(new SpecificImpulse());
this.readoutModules.Add(new Mass()); this.readoutModules.Add(new Mass());
this.readoutModules.Add(new Thrust()); this.readoutModules.Add(new Thrust());
this.readoutModules.Add(new ThrustToWeight()); this.readoutModules.Add(new ThrustToWeight());
// Rendezvous // Rendezvous
this.readoutModules.Add(new TargetSelector()); this.readoutModules.Add(new TargetSelector());
  this.readoutModules.Add(new RelativeInclination());
this.LoadHelpStrings(); this.LoadHelpStrings();
} }
#endregion #endregion
#region Properties #region Properties
/// <summary> /// <summary>
/// Gets and sets the available readout modules. /// Gets and sets the available readout modules.
/// </summary> /// </summary>
public List<ReadoutModule> ReadoutModules public List<ReadoutModule> ReadoutModules
{ {
get { return this.readoutModules; } get { return this.readoutModules; }
set { this.readoutModules = value; } set { this.readoutModules = value; }
} }
#endregion #endregion
#region Public Methods #region Public Methods
/// <summary> /// <summary>
/// Gets a readout module with the specified name or class name. (Returns null if not found.) /// Gets a readout module with the specified name or class name. (Returns null if not found.)
/// </summary> /// </summary>
public ReadoutModule GetReadoutModule(string name) public ReadoutModule GetReadoutModule(string name)
{ {
return this.readoutModules.FirstOrDefault(r => r.Name == name || r.GetType().Name == name); return this.readoutModules.FirstOrDefault(r => r.Name == name || r.GetType().Name == name);
} }
/// <summary> /// <summary>
/// Gets a list of readout modules which are associated with the specified category. /// Gets a list of readout modules which are associated with the specified category.
/// </summary> /// </summary>
public List<ReadoutModule> GetCategory(ReadoutCategory category) public List<ReadoutModule> GetCategory(ReadoutCategory category)
{ {
return this.readoutModules.Where(r => r.Category == category).ToList(); return this.readoutModules.Where(r => r.Category == category).ToList();
} }
/// <summary> /// <summary>
/// Resets all the readout modules. /// Resets all the readout modules.
/// </summary> /// </summary>
public void Reset() public void Reset()
{ {
foreach (var readout in this.readoutModules) foreach (var readout in this.readoutModules)
{ {
readout.Reset(); readout.Reset();
} }
} }
#endregion #endregion
#region Private Methods #region Private Methods
/// <summary> /// <summary>
/// Loads the help strings from file. /// Loads the help strings from file.
/// </summary> /// </summary>
private void LoadHelpStrings() private void LoadHelpStrings()
{ {
var handler = SettingHandler.Load("HelpStrings.xml"); var handler = SettingHandler.Load("HelpStrings.xml");
foreach (var readout in this.readoutModules) foreach (var readout in this.readoutModules)
{ {
readout.HelpString = handler.GetSet(readout.GetType().Name, readout.HelpString); readout.HelpString = handler.GetSet(readout.GetType().Name, readout.HelpString);
} }
handler.Save("HelpStrings.xml"); handler.Save("HelpStrings.xml");
} }
#endregion #endregion
} }
} }