コード例 #1
0
        public override void WindowGUI(int windowID)
        {
            base.WindowGUI(windowID);
            if (!WindowVisible && turner.toolbarControl.enabled)
            {
                turner.toolbarControl.SetFalse(false);
                turner.SaveParameters();
            }
            GUILayout.BeginVertical();
            UiStartSpeed();
            UiTurnAngle();
            UiAPTimeStart();
            UiAPTimeFinish();
            UiSensitivity();
            UiDestinationHeight();
            UiRoll();
            UiInclination();
            UiPressureCutoff();
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Setup", GUILayout.ExpandWidth(false)))
            {
                stagesettings.WindowVisible = !stagesettings.WindowVisible;
                stagesettings.InitPos();
            }

            turner.EnableStageManager = GUILayout.Toggle(turner.EnableStageManager, "Auto Stage");
            if (HighLogic.CurrentGame.Parameters.CustomParams <GT>().useStock)
            {
                GUILayout.Label("   ");
            }
            if (HighLogic.CurrentGame.Parameters.CustomParams <GT>().useStock)
            {
                GUILayout.FlexibleSpace();
            }
            turner.EnableSpeedup = GUILayout.Toggle(turner.EnableSpeedup, "Use Timewarp");

            if (HighLogic.CurrentGame.Parameters.CustomParams <GT>().useStock)
            {
                GUILayout.Label("            ");
                GUILayout.FlexibleSpace();
            }

            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            turner.flightMapWindow.WindowVisible = GUILayout.Toggle(turner.flightMapWindow.WindowVisible, "Show Launch Map", GUILayout.ExpandWidth(false));
            if (HighLogic.CurrentGame.Parameters.CustomParams <GT>().useStock)
            {
                GUILayout.Label("   ");
            }
            if (HighLogic.CurrentGame.Parameters.CustomParams <GT>().useStock)
            {
                GUILayout.FlexibleSpace();
            }
            turner.EnableStats = GUILayout.Toggle(turner.EnableStats, "Show Stats", GUILayout.ExpandWidth(false));
            if (HighLogic.CurrentGame.Parameters.CustomParams <GT>().useStock)
            {
                GUILayout.FlexibleSpace();
            }

            if (turner.statsWindow.WindowVisible != turner.EnableStats)
            {
                turner.statsWindow.WindowVisible = turner.EnableStats;
                turner.statsWindow.Save();
                if (!turner.statsWindow.WindowVisible)
                {
                    turner.statsWindow.windowPos.height = 200;
                    GravityTurner.DebugShow             = false;
                }
                else
                {
                    turner.statsWindow.InitPos();
                }
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            // when not landed and not launching we are in orbit. allow to save.
            if (!GravityTurner.getVessel.Landed && !turner.Launching)
            {
                if (turner.program >= GravityTurner.AscentProgram.InCircularisation)
                {
                    GUILayout.Label("Launch success! ", GUILayout.ExpandWidth(false));
                }

                if (GUILayout.Button(GuiUtils.saveIcon, GUILayout.ExpandWidth(false), GUILayout.MinWidth(18), GUILayout.MinHeight(21)))
                {
                    turner.SaveDefaultParameters();
                }
            }
            else
            {
                GUILayout.Label(string.Format("{0}, time to match: {1:0.0} s", GetAscentPhaseString(turner.program), turner.HoldAPTime), GUILayout.ExpandWidth(false));
            }
            GUILayout.EndHorizontal();

            // landed, not launched yet. Allow configuration
            if (GravityTurner.getVessel.Landed && !turner.Launching)
            {
                GUILayout.BeginHorizontal();
                string guess = turner.IsLaunchDBEmpty() ? "First Guess" : "Improve Guess";
                if (GUILayout.Button(guess, GUILayout.ExpandWidth(false)))
                {
                    turner.CalculateSettings(GravityTurner.getVessel);
                }

                if (!turner.IsLaunchDBEmpty() && GUILayout.Button("Previous Best", GUILayout.ExpandWidth(false)))
                {
                    turner.CalculateSettings(GravityTurner.getVessel, true);
                }

                if (GUILayout.Button("C", GUILayout.ExpandWidth(false)))
                {
                    if (File.Exists(GravityTurner.ConfigFilename(GravityTurner.getVessel)))
                    {
                        File.Delete(GravityTurner.ConfigFilename(GravityTurner.getVessel));
                    }

                    if (File.Exists(turner.launchdb.GetFilename()))
                    {
                        File.Delete(turner.launchdb.GetFilename());
                    }
                    turner.ClearLaunchDB();
                }


                helpWindow.Button("Improve Guess will try to extrapolate the best settings based on previous launches.  This may end in fiery death, but it won't happen the same way twice.  Be warned, sometimes launches get worse before they get better.  But they do get better.  To reset, click the <bold>C</bold> button");
                if (GUILayout.Button(GuiUtils.saveIcon, GUILayout.ExpandWidth(false), GUILayout.MinWidth(18), GUILayout.MinHeight(21)))
                {
                    turner.SaveDefaultParameters();
                }
                GUILayout.EndHorizontal();
            }
            // while landed, show launch button
            if (GravityTurner.getVessel.Landed && !turner.Launching && GUILayout.Button("Launch!", GUILayout.ExpandWidth(true), GUILayout.MinHeight(30)))
            {
                Debug.Log("Launch button pressed again");
                turner.Launch();
            }
            // while launching, show launch button
            if (turner.Launching && GUILayout.Button("Abort!", GUILayout.MinHeight(30)))
            {
                turner.Kill();
                turner.RecordAbortedLaunch();
            }
#if DEBUG
            // GUILayout.Label(GravityTurner.DebugMessage, GUILayout.ExpandWidth(true), GUILayout.MinHeight(200));
#endif

            GUILayout.EndVertical();
            double StopHeight = GravityTurner.getVessel.mainBody.atmosphereDepth;
            if (StopHeight <= 0)
            {
                StopHeight = turner.DestinationHeight * 1000;
            }
            turner.HoldAPTime = turner.APTimeStart + ((float)GravityTurner.getVessel.altitude / (float)StopHeight * (turner.APTimeFinish - turner.APTimeStart));
            if (turner.HoldAPTime > Math.Max(turner.APTimeFinish, turner.APTimeStart))
            {
                turner.HoldAPTime = Math.Max(turner.APTimeFinish, turner.APTimeStart);
            }
            if (turner.HoldAPTime < Math.Min(turner.APTimeFinish, turner.APTimeStart))
            {
                turner.HoldAPTime = Math.Min(turner.APTimeFinish, turner.APTimeStart);
            }
            Rect  r         = GUILayoutUtility.GetLastRect();
            float minHeight = r.height + r.yMin + 10;
            if (windowPos.height != minHeight && minHeight > 20)
            {
                windowPos.height = minHeight;
                Save();
            }
            GUI.DragWindow();
        }
コード例 #2
0
        public override void WindowGUI(int windowID)
        {
            base.WindowGUI(windowID);
            GUILayout.BeginVertical();
            GUILayout.BeginHorizontal();
            ItemLabel("Fairing Pressure");
            turner.FairingPressure.setValue(GUILayout.TextField(string.Format("{0:0}", turner.FairingPressure), GUILayout.Width(60)));
            turner.FairingPressure.locked = GuiUtils.LockToggle(turner.FairingPressure.locked);
            helpWindow.Button("Dynamic pressure where we pop the procedural fairings.  Higher values will pop lower in the atmosphere, which saves weight, but can cause overheating.  Fairings are heavy, so it's definitely a good idea to pop them as soon as possible.");
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            ItemLabel("Stage Post Delay");
            turner.autostagePostDelay.setValue(GUILayout.TextField(string.Format("{0:0}", turner.autostagePostDelay), GUILayout.Width(60)));
            turner.autostagePostDelay.locked = GuiUtils.LockToggle(turner.autostagePostDelay.locked);
            helpWindow.Button("Delay after a stage event before we consider the next stage.");
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            ItemLabel("Stage Pre Delay");
            turner.autostagePreDelay.setValue(GUILayout.TextField(string.Format("{0:0}", turner.autostagePreDelay), GUILayout.Width(60)));
            turner.autostagePreDelay.locked = GuiUtils.LockToggle(turner.autostagePreDelay.locked);
            helpWindow.Button("Delay after running out of fuel before we activate the next stage.");
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            ItemLabel("Stage Limit");
            turner.autostageLimit.setValue(GUILayout.TextField(string.Format("{0:0}", turner.autostageLimit), GUILayout.Width(60)));
            turner.autostageLimit.locked = GuiUtils.LockToggle(turner.autostageLimit.locked);
            helpWindow.Button("Stop at this stage number");
            GUILayout.EndHorizontal();

            GUILayout.Space(10);
            GUILayout.BeginHorizontal();

            if (GUILayout.Button("Clear Cache", GUILayout.Width(90)))
            {
                // Need to clear the cache directory
                // gt_launchdb*
                // gt_vessel*

                foreach (string f in Directory.EnumerateFiles(LaunchDB.GetBaseFilePath(this.GetType(), ""), "gt_vessel_*"))
                {
                    File.Delete(f);
                }
                foreach (string f in Directory.EnumerateFiles(LaunchDB.GetBaseFilePath(this.GetType(), ""), "gt_launchdb"))
                {
                    File.Delete(f);
                }
            }
#if false
            if (!turner.IsLaunchDBEmpty())
            {
                if (GUILayout.Button("Reset Guess", GUILayout.ExpandWidth(false)))
                {
                    if (File.Exists(GravityTurner.ConfigFilename(GravityTurner.getVessel)))
                    {
                        File.Delete(GravityTurner.ConfigFilename(GravityTurner.getVessel));
                    }

                    if (File.Exists(turner.launchdb.GetFilename()))
                    {
                        File.Delete(turner.launchdb.GetFilename());
                    }
                    turner.ClearLaunchDB();
                }
            }
#endif
            GUILayout.EndHorizontal();

            GUILayout.EndVertical();
            GUI.DragWindow();
        }