public override void Draw() { GUILayout.BeginHorizontal(); if (CFG.SelectedMacro != null && CFG.MacroIsActive) { GUILayout.Label(new GUIContent("Macro: " + CFG.SelectedMacro.Title, "The macro is executing..."), Styles.warning, GUILayout.ExpandWidth(true)); CFG.MacroIsActive &= !GUILayout.Button("Pause", Styles.enabled_button, GUILayout.Width(70)); if (GUILayout.Button("Stop", Styles.danger_button, GUILayout.ExpandWidth(false))) { CFG.StopMacro(); } GUILayout.Label("Edit", Styles.inactive_button, GUILayout.ExpandWidth(false)); } else if (CFG.SelectedMacro != null) { if (GUILayout.Button(new GUIContent("Macro: " + CFG.SelectedMacro.Title, "Select a macro from databases"), Styles.normal_button, GUILayout.ExpandWidth(true))) { selecting_macro = !selecting_macro; } CFG.MacroIsActive |= GUILayout.Button(CFG.SelectedMacro.Active? "Resume" : "Execute", Styles.active_button, GUILayout.Width(70)); if (GUILayout.Button("Stop", CFG.SelectedMacro.Active? Styles.danger_button : Styles.inactive_button, GUILayout.ExpandWidth(false))) { CFG.SelectedMacro.Rewind(); } if (GUILayout.Button("Edit", Styles.active_button, GUILayout.ExpandWidth(false))) { TCAMacroEditor.Edit(CFG); } } else { if (GUILayout.Button("Select Macro", Styles.normal_button, GUILayout.ExpandWidth(true))) { selecting_macro = !selecting_macro; } if (GUILayout.Button("New Macro", Styles.open_button, GUILayout.ExpandWidth(false))) { TCAMacroEditor.Edit(CFG); } } GUILayout.EndHorizontal(); if (selecting_macro) { TCAMacro macro = null; if (TCAMacroEditor.DrawMacroSelector(CFG, out macro)) { if (macro != null) { CFG.SelectedMacro = macro.GetCopy() as TCAMacro; CFG.MacroIsActive = false; } selecting_macro = false; } } }
void DrawMainWindow(int windowID) { //help button if (GUI.Button(new Rect(WindowPos.width - 23f, 2f, 20f, 18f), new GUIContent("?", "Help"))) { TCAManual.ToggleInstance(); } GUILayout.BeginVertical(); { GUILayout.BeginHorizontal(); { if (GUILayout.Button(new GUIContent("Select Modules", "Select which TCA Modules should be installed on this ship"), Styles.active_button, GUILayout.ExpandWidth(true))) { PartsEditor.Toggle(); } if (Modules[typeof(MacroProcessor)]) { if (TCAMacroEditor.Editing) { GUILayout.Label("Edit Macros", Styles.inactive_button, GUILayout.ExpandWidth(true)); } else if (GUILayout.Button("Edit Macros", Styles.active_button, GUILayout.ExpandWidth(true))) { TCAMacroEditor.Edit(CFG); } } if (GUILayout.Button(new GUIContent("Save As Default", "Save current configuration as default for new ships in this facility (VAB/SPH)"), Styles.active_button, GUILayout.ExpandWidth(true))) { var facility = EditorLogic.fetch.ship.shipFacility; warning.Message = string.Format("Are you sure you want to save current ship configuration as default for {0}?", facility); warning.yesCallback = () => TCAScenario.UpdateDefaultConfig(facility, CFG); warning.Show(true); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); { GUILayout.BeginVertical(); { GUILayout.BeginHorizontal(); { if (Utils.ButtonSwitch("Enable TCA", ref CFG.Enabled, "", GUILayout.ExpandWidth(true))) { if (!CFG.Enabled) { Engines.ForEach(e => e.forceThrustPercentage(100)); } CFG.GUIVisible = CFG.Enabled; } if (Modules[typeof(AltitudeControl)]) { if (Utils.ButtonSwitch("Hover", CFG.VF[VFlight.AltitudeControl], "Enable Altitude Control", GUILayout.ExpandWidth(false))) { CFG.VF.Toggle(VFlight.AltitudeControl); } Utils.ButtonSwitch("Follow Terrain", ref CFG.AltitudeAboveTerrain, "Enable follow terrain mode", GUILayout.ExpandWidth(false)); } if (Modules[typeof(VTOLControl)]) { if (Utils.ButtonSwitch("VTOL Mode", CFG.CTRL[ControlMode.VTOL], "Keyboard controls thrust direction instead of torque", GUILayout.ExpandWidth(false))) { CFG.CTRL.XToggle(ControlMode.VTOL); } } if (Modules[typeof(VTOLAssist)]) { Utils.ButtonSwitch("VTOL Assist", ref CFG.VTOLAssistON, "Automatic assistance with vertical takeof or landing", GUILayout.ExpandWidth(false)); } if (Modules[typeof(FlightStabilizer)]) { Utils.ButtonSwitch("Flight Stabilizer", ref CFG.StabilizeFlight, "Automatic flight stabilization when vessel is out of control", GUILayout.ExpandWidth(false)); } if (Modules[typeof(CollisionPreventionSystem)]) { Utils.ButtonSwitch("CPS", ref CFG.UseCPS, "Enable Collistion Prevention System", GUILayout.ExpandWidth(false)); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); { Utils.ButtonSwitch("AutoThrottle", ref CFG.BlockThrottle, "Change altitude/vertical velocity using main throttle control", GUILayout.ExpandWidth(true)); if (Utils.ButtonSwitch("SmartEngines", ref CFG.UseSmartEngines, "Group engines by thrust direction and automatically use appropriate group for a meneuver", GUILayout.ExpandWidth(true))) { if (CFG.UseSmartEngines) { CFG.SmartEngines.OnIfNot(SmartEnginesMode.Best); } } Utils.ButtonSwitch("AutoGear", ref CFG.AutoGear, "Automatically deploy/retract landing gear when needed", GUILayout.ExpandWidth(true)); Utils.ButtonSwitch("AutoBrakes", ref CFG.AutoBrakes, "Automatically ebable/disable brakes when needed", GUILayout.ExpandWidth(true)); Utils.ButtonSwitch("AutoStage", ref CFG.AutoStage, "Automatically activate next stage when previous falmeouted", GUILayout.ExpandWidth(true)); Utils.ButtonSwitch("AutoChute", ref CFG.AutoParachutes, "Automatically activate parachutes when needed", GUILayout.ExpandWidth(true)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (Modules[typeof(HorizontalSpeedControl)]) { Utils.ButtonSwitch("RCS Translation", ref CFG.CorrectWithTranslation, "Use RCS to correct horizontal velocity", GUILayout.ExpandWidth(true)); } Utils.ButtonSwitch("RCS Rotation", ref CFG.RotateWithRCS, "Use RCS for attitude control", GUILayout.ExpandWidth(true)); GUILayout.EndHorizontal(); } GUILayout.EndVertical(); } GUILayout.EndHorizontal(); if (Engines.Count > 0) { if (GUILayout.Button(new GUIContent("Autoconfigure Active Profile", "This will overwrite any existing groups and roles"), Styles.danger_button, GUILayout.ExpandWidth(true))) { autoconfigure_profile = true; } CFG.EnginesProfiles.Draw(height); if (CFG.ActiveProfile.Changed) { CFG.ActiveProfile.Apply(Engines); update_engines = true; } } GUILayout.BeginHorizontal(Styles.white); { GUILayout.Label("Ship Info:"); GUILayout.FlexibleSpace(); GUILayout.Label("Mass:", Styles.boxed_label); if (Utils.ButtonSwitch(Utils.formatMass(Mass), use_wet_mass, "Balance engines using Wet Mass")) { use_wet_mass = true; update_stats = true; } GUILayout.Label("►"); if (Utils.ButtonSwitch(Utils.formatMass(DryMass), !use_wet_mass, "Balance engines using Dry Mass")) { use_wet_mass = false; update_stats = true; } if (CFG.Enabled) { if (ActiveEngines.Count > 0) { GUILayout.Label(new GUIContent(string.Format("TMR: {0:F2} ► {1:F2}", MinTWR, MaxTWR), "Thrust ot Mass Ratio"), Styles.fracStyle(Utils.Clamp(MinTWR - 1, 0, 1))); GUILayout.Label(new GUIContent(string.Format("Balanced: {0:P1}", MinLimit), "The efficacy of the least efficient of balanced engines"), Styles.fracStyle(MinLimit)); Utils.ButtonSwitch("HL", ref show_imbalance, "Highlight engines with low efficacy deu to balancing"); } else { GUILayout.Label("No active engines", Styles.boxed_label); } } else { GUILayout.Label("TCA is disabled", Styles.boxed_label); } } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); TooltipsAndDragWindow(); }
void DrawMainWindow(int windowID) { //help button if (GUI.Button(new Rect(WindowPos.width - 23f, 2f, 20f, 18f), new GUIContent("?", "Help"))) { TCAManual.Toggle(); } GUILayout.BeginVertical(); if (HasMacroProcessor) { if (TCAMacroEditor.Editing) { GUILayout.Label("Edit Macros", Styles.inactive_button, GUILayout.ExpandWidth(true)); } else if (GUILayout.Button("Edit Macros", Styles.normal_button, GUILayout.ExpandWidth(true))) { TCAMacroEditor.Edit(CFG); } } GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); Utils.ButtonSwitch("Enable TCA", ref CFG.Enabled, "", GUILayout.ExpandWidth(false)); if (HasAltitudeControl) { if (Utils.ButtonSwitch("Hover", CFG.VF[VFlight.AltitudeControl], "Enable Altitude Control", GUILayout.ExpandWidth(false))) { CFG.VF.Toggle(VFlight.AltitudeControl); } Utils.ButtonSwitch("Follow Terrain", ref CFG.AltitudeAboveTerrain, "Enable follow terrain mode", GUILayout.ExpandWidth(false)); Utils.ButtonSwitch("AutoThrottle", ref CFG.BlockThrottle, "Change altitude/vertical velocity using main throttle control", GUILayout.ExpandWidth(false)); } if (HasVTOLControls) { if (Utils.ButtonSwitch("VTOL Mode", CFG.CTRL[ControlMode.VTOL], "Keyboard controls thrust direction instead of torque", GUILayout.ExpandWidth(false))) { CFG.CTRL.XToggle(ControlMode.VTOL); } } if (HasVTOLAssist) { Utils.ButtonSwitch("VTOL Assist", ref CFG.VTOLAssistON, "Automatic assistnce with vertical takeof or landing", GUILayout.ExpandWidth(false)); } if (HasFlightStabilizer) { Utils.ButtonSwitch("Flight Stabilizer", ref CFG.StabilizeFlight, "Automatic flight stabilization when vessel is out of control", GUILayout.ExpandWidth(false)); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); Utils.ButtonSwitch("AutoGear", ref CFG.AutoGear, "Automatically deploy/retract landing gear when needed", GUILayout.ExpandWidth(true)); Utils.ButtonSwitch("AutoBrakes", ref CFG.AutoBrakes, "Automatically ebable/disable brakes when needed", GUILayout.ExpandWidth(true)); Utils.ButtonSwitch("AutoStage", ref CFG.AutoStage, "Automatically activate next stage when previous falmeouted", GUILayout.ExpandWidth(true)); Utils.ButtonSwitch("AutoChute", ref CFG.AutoParachutes, "Automatically activate parachutes when needed", GUILayout.ExpandWidth(true)); GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.EndHorizontal(); CFG.EnginesProfiles.Draw(height); if (CFG.ActiveProfile.Changed) { CFG.ActiveProfile.Apply(Engines); update_engines = true; } GUILayout.BeginHorizontal(Styles.white); GUILayout.Label("Ship Info:"); GUILayout.FlexibleSpace(); GUILayout.Label(string.Format("Mass: {0} ► {1}", Utils.formatMass(Mass), Utils.formatMass(DryMass)), Styles.boxed_label); GUILayout.Label(string.Format("TWR: {0:F2} ► {1:F2}", MinTWR, MaxTWR), Styles.boxed_label); GUILayout.EndHorizontal(); GUILayout.EndVertical(); TooltipsAndDragWindow(WindowPos); }