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); }
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(); }