protected void buildSceneWindowGUI(int windowID)
        {
            preventEditorClickthroughs();

            if (buildSceneMinimized)
            {
                GUILayout.BeginHorizontal();
                if (GUILayout.Button("Max"))
                {
                    buildSceneMinimized = false;
                }
                if (GUILayout.Button("X", ARUtils.buttonStyle(Color.red)))
                {
                    if (weLockedEditor && EditorLogic.editorLocked)
                    {
                        EditorLogic.fetch.Unlock();
                    }
                    buildSceneShow = false;
                }
                GUILayout.EndHorizontal();
                base.WindowGUI(windowID);
                return;
            }


            double mass = 0;
            int    cost = 0;

            foreach (Part part in EditorLogic.SortedShipList)
            {
                cost += part.partInfo.cost;

                if (part.physicalSignificance != Part.PhysicalSignificance.NONE)
                {
                    mass += part.totalMass();
                }

                //In the VAB, ModuleJettison (which adds fairings) forgets to subtract the fairing mass from
                //the part mass if the engine does have a fairing, so we have to do this manually
                if (part.vessel == null && //hacky way to tell whether we're in the VAB
                    (part.Modules.OfType <ModuleJettison>().Count() > 0))
                {
                    ModuleJettison jettison = part.Modules.OfType <ModuleJettison>().First();
                    if (part.findAttachNode(jettison.bottomNodeName).attachedPart == null)
                    {
                        mass -= jettison.jettisonedObjectMass;
                    }
                }
            }

            double TWR = 0;

            if (twrPerStage.Length > 0)
            {
                TWR = twrPerStage[twrPerStage.Length - 1];
            }

            int partCount = EditorLogic.SortedShipList.Count;

            GUIStyle txtR = new GUIStyle(GUI.skin.label);

            txtR.alignment = TextAnchor.UpperRight;

            GUIStyle sty = new GUIStyle(GUI.skin.button);

            sty.normal.textColor   = sty.focused.textColor = Color.white;
            sty.hover.textColor    = sty.active.textColor = Color.yellow;
            sty.onNormal.textColor = sty.onFocused.textColor = sty.onHover.textColor = sty.onActive.textColor = Color.green;
            sty.padding            = txtR.padding;
            sty.margin             = txtR.margin;


            GUILayout.BeginVertical();


            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Minimize"))
            {
                buildSceneMinimized = true;
            }
            if (GUILayout.Button("Close", ARUtils.buttonStyle(Color.red)))
            {
                if (weLockedEditor && EditorLogic.editorLocked)
                {
                    EditorLogic.fetch.Unlock();
                }
                buildSceneShow = false;
            }
            GUILayout.EndHorizontal();

            //Alloc my planitron
            if (_planitron == null)
            {
                _planitron = new MechJebModulePlanitron(core);
            }

            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
            GUILayout.Label("Show planitron", GUILayout.ExpandWidth(true));
            _planitron.enabled = GUILayout.Toggle(_planitron.enabled, _planitron.getPlanet(), sty);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
            GUILayout.Label("Total mass", GUILayout.ExpandWidth(true));
            GUILayout.Label(mass.ToString("F2") + " tons", txtR);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
            GUILayout.Label("Surface weight", GUILayout.ExpandWidth(true));
            GUILayout.Label((mass * _planitron.gravity()).ToString("F2") + " tons", txtR);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
            GUILayout.Label("Surface TWR", GUILayout.ExpandWidth(true));
            GUILayout.Label(TWR.ToString("F2"), txtR);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
            GUILayout.Label("Part count", GUILayout.ExpandWidth(true));
            GUILayout.Label(partCount.ToString(), txtR);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
            GUILayout.Label("Total Cost", GUILayout.ExpandWidth(true));
            GUILayout.Label(cost.ToString(), txtR);
            GUILayout.EndHorizontal();

            doStagingAnalysisGUI(true);

            GUILayout.EndVertical();

            base.WindowGUI(windowID);
        }
Beispiel #2
0
        protected void buildSceneWindowGUI(int windowID)
        {
            if (buildSceneMinimized)
            {
                GUILayout.BeginHorizontal();
                if (GUILayout.Button("Max"))
                {
                    buildSceneMinimized = false;
                }
                if (GUILayout.Button("X", ARUtils.buttonStyle(Color.red)))
                {
                    buildSceneShow = false;
                }
                GUILayout.EndHorizontal();
                base.WindowGUI(windowID);
                return;
            }


            double mass = 0;

            foreach (Part part in EditorLogic.SortedShipList)
            {
                if (part.physicalSignificance != Part.PhysicalSignificance.NONE)
                {
                    mass += part.mass;
                }
            }

            double TWR = 0;

            if (twrPerStage.Length > 0)
            {
                TWR = twrPerStage[twrPerStage.Length - 1];
            }

            int partCount = EditorLogic.SortedShipList.Count;

            GUIStyle txtR = new GUIStyle(GUI.skin.label);

            txtR.alignment = TextAnchor.UpperRight;



            GUILayout.BeginVertical();


            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Minimize"))
            {
                buildSceneMinimized = true;
            }
            if (GUILayout.Button("Close", ARUtils.buttonStyle(Color.red)))
            {
                buildSceneShow = false;
            }
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
            GUILayout.Label("Total mass", GUILayout.ExpandWidth(true));
            GUILayout.Label(mass.ToString("F2") + " tons", txtR);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
            GUILayout.Label("Surface TWR", GUILayout.ExpandWidth(true));
            GUILayout.Label(TWR.ToString("F2"), txtR);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
            GUILayout.Label("Part count", GUILayout.ExpandWidth(true));
            GUILayout.Label(partCount.ToString(), txtR);
            GUILayout.EndHorizontal();

            doStagingAnalysisGUI();

            GUILayout.EndVertical();

            base.WindowGUI(windowID);
        }