New StageInfo module for more detailed engineering information.
[VOID.git] / VOID_StageInfo.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// VOID © 2014 toadicus
//
// This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. To view a
// copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/
 
using Engineer.VesselSimulator;
using KSP;
using System;
using System.Collections.Generic;
using System.Linq;
using ToadicusTools;
using UnityEngine;
 
namespace VOID
{
        public class VOID_StageInfo : VOID_WindowModule
        {
                private Table stageTable;
 
                private Table.Column<int> stageNumberCol;
                private Table.Column<double> stageDeltaVCol;
                private Table.Column<double> stageMassCol;
 
                private bool stylesApplied;
 
                public VOID_StageInfo() : base()
                {
                        this._Name = "Stage Information";
 
                        this.stylesApplied = false;
 
                        this.stageTable = new Table();
 
                        this.stageNumberCol = new Table.Column<int>(40f);
                        this.stageTable.Add(this.stageNumberCol);
 
                        this.stageDeltaVCol = new Table.Column<double>(80f);
                        this.stageDeltaVCol.Format = "S2";
                        this.stageTable.Add(this.stageDeltaVCol);
 
                        this.stageMassCol = new Table.Column<double>(80f);
                        this.stageMassCol.Format = "G2";
                        this.stageTable.Add(this.stageMassCol);
                }
 
                public override void ModuleWindow(int _)
                {
                        if (
                                HighLogic.LoadedSceneIsEditor ||
                                (TimeWarp.WarpMode == TimeWarp.Modes.LOW) ||
                                (TimeWarp.CurrentRate <= TimeWarp.MaxPhysicsRate)
                        )
                        {
                                Engineer.VesselSimulator.SimManager.RequestSimulation();
                        }
 
                        if (!this.stylesApplied)
                        {
                                this.stageNumberCol.Style = core.LabelStyles["center"];
                                this.stageDeltaVCol.Style = core.LabelStyles["center"];
                                this.stageMassCol.Style = core.LabelStyles["center"];
                        }
 
                        this.stageTable.ClearColumns();
 
                        if (core.Stages == null || core.Stages.Length == 0)
                        {
                                GUILayout.BeginVertical();
 
                                GUILayout.Label("No stage data!");
 
                                GUILayout.EndVertical();
 
                                return;
                        }
 
                        foreach (Stage stage in core.Stages)
                        {
                                this.stageNumberCol.Add(stage.number);
 
                                this.stageDeltaVCol.Add(stage.deltaV);
 
                                this.stageMassCol.Add(stage.mass);
                        }
 
                        this.stageTable.Render();
 
                        GUI.DragWindow();
                }
        }
 
        public class VOID_StageInfoEditor : VOID_StageInfo, IVOID_EditorModule {}
}