コード例 #1
0
 public void CopyOrInit()
 {
     foreach (var p in EditorLogic.fetch.ship.parts)
     {
         if (p != this.part)
         {
             var m = p.FindModuleImplementing <Module_BobsPanicBox>();
             if (m != null)
             {
                 SetAllValues(m.av);
                 return;
             }
         }
     }
     av.ResetToDefault();
     SetAllValues(av);
 }
コード例 #2
0
        void BPB_Window(int windowId)
        {
            if (abortValues == null)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("abortValues is null");
                GUILayout.EndHorizontal();
                return;
            }
            GUILayout.BeginHorizontal();
            abortValues.armed = GUILayout.Toggle(abortValues.armed, "Active");
            GUILayout.EndHorizontal();
            if (!abortValues.armed)
            {
                GUI.enabled = false;
            }

            GUILayout.BeginHorizontal();
            abortValues.explosiveTriggerEnabled = GUILayout.Toggle(abortValues.explosiveTriggerEnabled, "Arm Explosion Detection");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            abortValues.vertSpeedTriggerEnabled = GUILayout.Toggle(abortValues.vertSpeedTriggerEnabled, "Neg-Vel-Limit (m/sec): " + abortValues.vertSpeed.ToString("F1"));
            if (abortValues.armed && !abortValues.vertSpeedTriggerEnabled)
            {
                GUI.enabled = false;
            }
            GUILayout.FlexibleSpace();
            abortValues.vertSpeed = GUILayout.HorizontalSlider(abortValues.vertSpeed, -100f, -1f, GUILayout.Width(200));
            GUILayout.EndHorizontal();
            if (abortValues.armed && !abortValues.vertSpeedTriggerEnabled)
            {
                GUI.enabled = true;
            }

            GUILayout.BeginHorizontal();
            abortValues.gForceTriggerEnabled = GUILayout.Toggle(abortValues.gForceTriggerEnabled, "High-G-Limit (G): " + abortValues.gForceTrigger.ToString("F1"));
            GUILayout.FlexibleSpace();
            if (abortValues.armed && !abortValues.gForceTriggerEnabled)
            {
                GUI.enabled = false;
            }
            abortValues.gForceTrigger = GUILayout.HorizontalSlider(abortValues.gForceTrigger, 1f, 10f, GUILayout.Width(200));
            GUILayout.EndHorizontal();
            if (abortValues.armed && !abortValues.gForceTriggerEnabled)
            {
                GUI.enabled = true;
            }

            GUILayout.BeginHorizontal();
            abortValues.exceedingAoA = GUILayout.Toggle(abortValues.exceedingAoA, "Max AoA (degrees): " + abortValues.maxAoA.ToString());
            if (abortValues.armed && !abortValues.exceedingAoA)
            {
                GUI.enabled = false;
            }
            GUILayout.FlexibleSpace();
            abortValues.maxAoA = (int)GUILayout.HorizontalSlider(abortValues.maxAoA, 1f, 179f, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            if (HighLogic.CurrentGame.Parameters.CustomParams <BPB_Options>().useAtmoPercentage)
            {
                GUILayout.Label("Ignore AoA above altitude (%):");
            }
            else
            {
                GUILayout.Label("Ignore AoA above altitude (km):");
            }
            try
            {
                GUILayout.FlexibleSpace();
                abortValues.ignoreAoAAboveAltitudeKm = Int32.Parse(GUILayout.TextField(abortValues.ignoreAoAAboveAltitudeKm.ToString(), GUILayout.Width(50)));
            }
            catch { }
            GUILayout.Space(10);
            abortValues.ignoreAoAAboveAltitudeKm = (int)GUILayout.HorizontalSlider(abortValues.ignoreAoAAboveAltitudeKm, 1f, 100f, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            if (abortValues.armed && !abortValues.exceedingAoA)
            {
                GUI.enabled = true;
            }

            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            GUILayout.Label("Timeout (disable) after (secs):");
            try
            {
                GUILayout.FlexibleSpace();
                abortValues.disableAfter = Int32.Parse(GUILayout.TextField(abortValues.disableAfter.ToString(), GUILayout.Width(50)));
            }
            catch { }
            GUILayout.Space(10);
            abortValues.disableAfter = (int)GUILayout.HorizontalSlider(abortValues.disableAfter, 10f, 600f, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            if (HighLogic.CurrentGame.Parameters.CustomParams <BPB_Options>().useAtmoPercentage)
            {
                GUILayout.Label("Disable at altitude (%):");
            }
            else
            {
                GUILayout.Label("Disable at altitude (km):");
            }
            try
            {
                GUILayout.FlexibleSpace();
                abortValues.disableAtAltitudeKm = Int32.Parse(GUILayout.TextField(abortValues.disableAtAltitudeKm.ToString(), GUILayout.Width(50)));
            }
            catch { }
            GUILayout.Space(10);
            abortValues.disableAtAltitudeKm = (int)GUILayout.HorizontalSlider(abortValues.disableAtAltitudeKm, 1f, 100f, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            if (abortValues.actionAfterTimeout == 0)
            {
                GUILayout.Label("Trigger action after timeout: None");
            }
            else
            {
                GUILayout.Label("Trigger action after timeout: Custom" + abortValues.actionAfterTimeout.ToString("D2"));
            }
            GUILayout.FlexibleSpace();
            abortValues.actionAfterTimeout = (int)GUILayout.HorizontalSlider(abortValues.actionAfterTimeout, 0f, 10f, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Max G for timeout action:");
            try
            {
                GUILayout.FlexibleSpace();
                abortValues.maxTimeoutActionG = (float)Double.Parse(GUILayout.TextField(abortValues.maxTimeoutActionG.ToString("F1"), GUILayout.Width(50)));
            }
            catch { }
            GUILayout.Space(10);
            abortValues.maxTimeoutActionG = GUILayout.HorizontalSlider(abortValues.maxTimeoutActionG, 1f, 10f, GUILayout.Width(200));
            GUILayout.EndHorizontal();
            GUILayout.Space(10);

            GUILayout.BeginHorizontal();
            GUILayout.Label("Post-abort delay (secs):");
            try
            {
                GUILayout.FlexibleSpace();
                abortValues.postAbortDelay = Int32.Parse(GUILayout.TextField(abortValues.postAbortDelay.ToString(), GUILayout.Width(50)));
            }
            catch { }
            GUILayout.Space(10);
            abortValues.postAbortDelay = (int)GUILayout.HorizontalSlider(abortValues.postAbortDelay, 10f, 60f, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            if (abortValues.postAbortAction == 0)
            {
                GUILayout.Label("Trigger action after abort: None");
            }
            else
            {
                GUILayout.Label("Trigger action after abort: Custom" + abortValues.postAbortAction.ToString("D2"));
            }
            GUILayout.FlexibleSpace();
            abortValues.postAbortAction = (int)GUILayout.HorizontalSlider(abortValues.postAbortAction, 0f, 10f, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            abortValues.delayPostAbortUntilSafe = GUILayout.Toggle(abortValues.delayPostAbortUntilSafe, "Delay post-abort until safe for chutes");
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUILayout.Space(10);

            GUILayout.BeginHorizontal();
            GUI.enabled = true;
            if (GUILayout.Button("Reset all values to defaults", GUILayout.Width(250)))
            {
                abortValues.ResetToDefault();
            }
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Close"))
            {
                CloseWindow();
            }
            if (HighLogic.LoadedSceneIsFlight)
            {
                if (vmLastActiveVessel.aborted)
                {
                    if (!vmLastActiveVessel.abortAcknowledged)
                    {
                        var ack = "Acknowledge";
                        if (buttonRed)
                        {
                            ack = "<color=red>Acknowledge</color>";
                        }
                        if (GUILayout.Button(ack))
                        {
                            vmLastActiveVessel.abortAcknowledged = true;
                        }
                    }
                    else
                    {
                        if (GUILayout.Button("Disable Abort Sequence"))
                        {
                            DisableAbortSequence();
                        }
                    }
                }
                else
                {
                    if (!vmLastActiveVessel.Changed(abortValues))
                    {
                        GUI.enabled = false;
                    }
                    if (GUILayout.Button("Apply"))
                    {
                        //BPB_VesselModule vm = FlightGlobals.ActiveVessel.GetComponent<BPB_VesselModule>();
                        vmLastActiveVessel.SetAllValues(abortValues);
                        //vm.armed = vm.vertSpeedTriggerEnabled | vm.gForceTriggerEnabled | vm.explosiveTriggerEnabled;
                        abortValues.SetAllValues(abortValues);
                    }
                    GUI.enabled = true;
                }
            }
            GUILayout.EndHorizontal();
            GUI.DragWindow();
        }