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(0, 0f, 20f, 18f), Collapsed? uncollapse_button : collapse_button, Styles.label)) { Collapsed = !Collapsed; update_collapsed_rect(); } if (GUI.Button(new Rect(WindowPos.width - 20f, 0f, 20f, 18f), new GUIContent("?", "Help"), Styles.label)) { TCAManual.ToggleInstance(); } //vessel switching if (HaveRemoteControl) { if (GUI.Button(new Rect(22, 0f, 20f, 18f), prev_vessel_button, Styles.label)) { switch_vessel(FlightGlobals.Vessels.Next); } if (RemoteControl && GUI.Button(new Rect(44, 0f, 20f, 18f), active_vessel_button, Styles.label)) { onVesselChange(ActiveVesselTCA.vessel); } if (RemoteControl && GUI.Button(new Rect(WindowPos.width - 64f, 0f, 20f, 18f), switch_vessel_button, Styles.label)) { FlightGlobals.SetActiveVessel(vessel); } if (GUI.Button(new Rect(WindowPos.width - 42f, 0f, 20f, 18f), next_vessel_button, Styles.label)) { switch_vessel(FlightGlobals.Vessels.Prev); } } if (TCA.IsControllable) { GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); //tca toggle var enabled_style = Styles.inactive_button; if (CFG.Enabled) { enabled_style = Styles.enabled_button; } else if (!VSL.LandedOrSplashed) { if (EnabledBlinker.On) { enabled_style = Styles.danger_button; } Status(0.1, "red", "<b>TCA is disabled</b>"); } if (GUILayout.Button("Enabled", enabled_style, GUILayout.Width(70))) { TCA.ToggleTCA(); } #if DEBUG if (GUILayout.Button("ReGlobals", Styles.active_button, GUILayout.ExpandWidth(false))) { Globals.Load(); Styles.ConfigureButtons(); TCA.OnReloadGlobals(); } #endif //squad mode switch if (SQD != null) { SQD.Draw(); } GUILayout.FlexibleSpace(); StatusLabel(); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(Styles.white, GUILayout.MinHeight(ControlsHeight), GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)); if (ActiveTab != null) { ActiveTab.Draw(); } GUILayout.EndVertical(); tabs_scroll = GUILayout.BeginScrollView(tabs_scroll, Styles.white, GUILayout.ExpandHeight(true), GUILayout.Width(55)); for (int i = 0, AllTabsCount = AllTabs.Count; i < AllTabsCount; i++) { var t = AllTabs[i]; if (t.DrawTabButton(t == ActiveTab)) { ActiveTab = t; CFG.ActiveTab = i; } } GUILayout.EndScrollView(); GUILayout.EndHorizontal(); DrawStatusMessage(); GUILayout.EndVertical(); } else { GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); VSL.Info.Draw(); GUILayout.FlexibleSpace(); StatusLabel(); GUILayout.EndHorizontal(); GUILayout.Label("Vessel is Uncontrollable", Styles.label, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); DrawStatusMessage(); GUILayout.EndVertical(); } TooltipsAndDragWindow(); }