//
// VOID_Hud.cs
//
// Author:
// toadicus <>
//
// Copyright (c) 2013 toadicus
//
// 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 .
//
using KSP;
using UnityEngine;
using System;
using System.Collections.Generic;
using System.Text;
namespace VOID
{
public class VOID_HUD : VOID_Module, IVOID_Module
{
/*
* Fields
* */
[AVOID_SaveValue("colorIndex")]
protected VOID_SaveValue _colorIndex = 0;
protected List textColors = new List();
/*
* Properties
* */
public int ColorIndex
{
get
{
return this._colorIndex;
}
set
{
if (this._colorIndex >= this.textColors.Count - 1)
{
this._colorIndex = 0;
return;
}
this._colorIndex = value;
}
}
/*
* Methods
* */
public VOID_HUD() : base()
{
this._Name = "Heads-Up Display";
this._Active.value = true;
this.textColors.Add(Color.green);
this.textColors.Add(Color.black);
this.textColors.Add(Color.white);
this.textColors.Add(Color.red);
this.textColors.Add(Color.blue);
this.textColors.Add(Color.yellow);
this.textColors.Add(Color.gray);
this.textColors.Add(Color.cyan);
this.textColors.Add(Color.magenta);
VOID_Core.Instance.LabelStyles["hud"] = new GUIStyle();
VOID_Core.Instance.LabelStyles["hud"].normal.textColor = this.textColors [this.ColorIndex];
Tools.PostDebugMessage ("VOID_HUD: Constructed.");
}
public override void DrawGUI()
{
StringBuilder leftHUD;
StringBuilder rightHUD;
GUI.skin = VOID_Core.Instance.Skin;
if (VOID_Core.Instance.powerAvailable)
{
leftHUD = new StringBuilder();
rightHUD = new StringBuilder();
VOID_Core.Instance.LabelStyles["hud"].normal.textColor = textColors [ColorIndex];
leftHUD.AppendFormat("Obt Alt: {0} Obt Vel: {1}",
VOID_Data.orbitAltitude.ToSIString(),
VOID_Data.orbitVelocity.ToSIString()
);
leftHUD.AppendFormat("\nAp: {0} ETA {1}",
VOID_Data.orbitApoAlt.ToSIString(),
VOID_Data.timeToApo.ValueUnitString()
);
leftHUD.AppendFormat("\nPe: {0} ETA {1}",
VOID_Data.oribtPeriAlt.ToSIString(),
VOID_Data.timeToPeri.ValueUnitString()
);
leftHUD.AppendFormat("\nInc: {0}", VOID_Data.orbitInclination.ValueUnitString("F3"));
leftHUD.AppendFormat("\nPrimary: {0}", VOID_Data.primaryName.ValueUnitString());
rightHUD.AppendFormat("Srf Alt: {0} Srf Vel: {1}",
VOID_Data.trueAltitude.ToSIString(),
VOID_Data.surfVelocity.ToSIString()
);
rightHUD.AppendFormat("\nVer: {0} Hor: {1}",
VOID_Data.vertVelocity.ToSIString(),
VOID_Data.horzVelocity.ToSIString()
);
rightHUD.AppendFormat("\nLat: {0} Lon: {1}",
VOID_Data.surfLatitude.ValueUnitString(),
VOID_Data.surfLongitude.ValueUnitString()
);
rightHUD.AppendFormat("\nHdg: {0}", VOID_Data.vesselHeading.ValueUnitString());
rightHUD.AppendFormat("\nBiome: {0} Sit: {1}",
VOID_Data.currBiome.ValueUnitString(),
VOID_Data.expSituation.ValueUnitString()
);
GUI.Label (
new Rect ((Screen.width * .2083f), 0, 300f, 70f),
leftHUD.ToString(),
VOID_Core.Instance.LabelStyles["hud"]);
GUI.Label (
new Rect ((Screen.width * .625f), 0, 300f, 90f),
rightHUD.ToString(),
VOID_Core.Instance.LabelStyles["hud"]);
}
else
{
VOID_Core.Instance.LabelStyles["hud"].normal.textColor = Color.red;
GUI.Label (new Rect ((Screen.width * .2083f), 0, 300f, 70f), "-- POWER LOST --", VOID_Core.Instance.LabelStyles["hud"]);
GUI.Label (new Rect ((Screen.width * .625f), 0, 300f, 70f), "-- POWER LOST --", VOID_Core.Instance.LabelStyles["hud"]);
}
}
public override void DrawConfigurables()
{
if (GUILayout.Button ("Change HUD color", GUILayout.ExpandWidth (false)))
{
++this.ColorIndex;
}
}
}
public static partial class VOID_Data
{
public static VOID_StrValue expSituation = new VOID_StrValue(
"Situation",
new Func (() => VOID_Core.Instance.vessel.GetExperimentSituation().HumanString())
);
}
}