public override void DrawGUI(bool inEditor) { switch (windowStat) { case WindowStat.OPENING: windowProgr += Time.deltaTime; if (windowProgr >= 1) { windowProgr = 1; windowStat = WindowStat.NORMAL; } break; case WindowStat.CLOSING: windowProgr -= Time.deltaTime; if (windowProgr <= 0) { windowProgr = 0; windowStat = WindowStat.HIDDEN; } break; } GUI.depth = -100; GUI.SetNextControlName("MechJebOpen"); GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(new Vector3(0, 0, -90)), Vector3.one); if (!hideButton && GUI.RepeatButton(new Rect(windowVPos, Screen.width - 25 - (200 * windowProgr), 100, 25), (windowStat == WindowStat.HIDDEN) ? "/\\ MechJeb /\\" : "\\/ MechJeb \\/")) { if (Event.current.button == 0) { ShowHideWindow(); } else if (!movingButton && Event.current.button == 1) { movingButton = true; } } GUI.matrix = Matrix4x4.identity; GUI.depth = -99; if (windowStat != WindowStat.HIDDEN) { Rect pos = new Rect(Screen.width - windowProgr * 200, Mathf.Clamp(-100 - windowVPos, 0, Screen.height - windowPos.height), windowPos.width, windowPos.height); windowPos = GUILayout.Window(GetType().FullName.GetHashCode(), pos, WindowGUI, "MechJeb " + core.version, GUILayout.Width(200), GUILayout.Height(20)); } else { windowPos = new Rect(Screen.width, Screen.height, 0, 0); // make it small so the mouse can't hoover it } GUI.depth = -98; if (firstDraw) { GUI.FocusControl("MechJebOpen"); firstDraw = false; } }
public void ShowHideWindow() { if (windowStat == WindowStat.HIDDEN) { windowStat = WindowStat.OPENING; windowProgr = 0; firstDraw = true; } else if (windowStat == WindowStat.NORMAL) { windowStat = WindowStat.CLOSING; windowProgr = 1; } }
public override void DrawGUI(bool inEditor) { switch (windowStat) { case WindowStat.OPENING: windowProgr += Time.deltaTime; if (windowProgr >= 1) { windowProgr = 1; windowStat = WindowStat.NORMAL; } break; case WindowStat.CLOSING: windowProgr -= Time.deltaTime; if (windowProgr <= 0) { windowProgr = 0; windowStat = WindowStat.HIDDEN; } break; } GUI.depth = -100; GUI.SetNextControlName("MechJebOpen"); Matrix4x4 previousGuiMatrix = GUI.matrix; if (windowSide == WindowSide.RIGHT || windowSide == WindowSide.LEFT) { GUI.matrix = GUI.matrix * Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(new Vector3(0, 0, -90)), Vector3.one); } if (!HideMenuButton && GUI.RepeatButton(buttonPos, (windowStat == WindowStat.HIDDEN) ^ (windowSide == WindowSide.TOP || windowSide == WindowSide.LEFT) ? "▲ MechJeb ▲" : "▼ MechJeb ▼")) { if (Event.current.button == 0) { ShowHideWindow(); } else if (!movingButton && Event.current.button == 1) { movingButton = true; } } GUI.matrix = previousGuiMatrix; GUI.depth = -99; if (windowStat != WindowStat.HIDDEN) { windowPos = GUILayout.Window(GetType().FullName.GetHashCode(), displayedPos, WindowGUI, "MechJeb " + core.version, GUILayout.Width(colWidth), GUILayout.Height(20)); } else { windowPos = new Rect(GuiUtils.scaledScreenWidth, GuiUtils.scaledScreenHeight, 0, 0); // make it small so the mouse can't hoover it } GUI.depth = -98; if (firstDraw) { GUI.FocusControl("MechJebOpen"); firstDraw = false; } }
public override void DrawGUI(bool inEditor) { switch (windowStat) { case WindowStat.OPENING: windowProgr += Time.deltaTime; if (windowProgr >= 1) { windowProgr = 1; windowStat = WindowStat.NORMAL; } break; case WindowStat.CLOSING: windowProgr -= Time.deltaTime; if (windowProgr <= 0) { windowProgr = 0; windowStat = WindowStat.HIDDEN; } break; } GUI.depth = -100; GUI.SetNextControlName("MechJebOpen"); GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(new Vector3(0, 0, -90)), Vector3.one); if (GUI.Button(new Rect((-Screen.height / 4 - 50), Screen.width - 25 - (200 * windowProgr), 100, 25), (windowStat == WindowStat.HIDDEN) ? "/\\ MechJeb /\\" : "\\/ MechJeb \\/")) { if (windowStat == WindowStat.HIDDEN) { windowStat = WindowStat.OPENING; windowProgr = 0; firstDraw = true; } else if (windowStat == WindowStat.NORMAL) { windowStat = WindowStat.CLOSING; windowProgr = 1; } } GUI.matrix = Matrix4x4.identity; GUI.depth = -99; if (windowStat != WindowStat.HIDDEN) { windowVector.x = Screen.width - windowProgr * 200; windowVector.y = Screen.height / 4 - windowPos.height / 2; if (windowVector.y < 75) { windowVector.y = 75; } windowPos = GUILayout.Window(GetType().FullName.GetHashCode(), windowPos, WindowGUI, "MechJeb " + core.version, GUILayout.Width(200), GUILayout.Height(20)); } else { windowVector.x = Screen.width + 100; windowVector.y = Screen.height + 100; } GUI.depth = -98; if (firstDraw) { GUI.FocusControl("MechJebOpen"); firstDraw = false; } }
public void loadSettings() { if (settings == null) { settings = new SettingsManager(KSPUtil.ApplicationRootPath + "MuMech/MechJeb.cfg"); } foreach (ComputerModule module in modules) { module.onLoadGlobalSettings(settings); } main_windowStat = (WindowStat)settings["main_windowStat"].value_integer; main_windowProgr = (float)settings["main_windowProgr"].value_decimal; settingsChanged = false; settingsLoaded = true; }
private void drawGUI() { if ((part.State != PartStates.DEAD) && (part.vessel == FlightGlobals.ActiveVessel) && (allJebs[part.vessel].controller == this) && !gamePaused) { GUI.skin = HighLogic.Skin; switch (main_windowStat) { case WindowStat.OPENING: main_windowProgr += Time.fixedDeltaTime; if (main_windowProgr >= 1) { main_windowProgr = 1; main_windowStat = WindowStat.NORMAL; } break; case WindowStat.CLOSING: main_windowProgr -= Time.fixedDeltaTime; if (main_windowProgr <= 0) { main_windowProgr = 0; main_windowStat = WindowStat.HIDDEN; } break; } GUI.depth = -100; GUI.SetNextControlName("MechJebOpen"); GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(new Vector3(0, 0, -90)), Vector3.one); if (GUI.Button(new Rect((-Screen.height - 100) / 2, Screen.width - 25 - (200 * main_windowProgr), 100, 25), (main_windowStat == WindowStat.HIDDEN) ? "/\\ MechJeb /\\" : "\\/ MechJeb \\/")) { if (main_windowStat == WindowStat.HIDDEN) { main_windowStat = WindowStat.OPENING; main_windowProgr = 0; firstDraw = true; } else if (main_windowStat == WindowStat.NORMAL) { main_windowStat = WindowStat.CLOSING; main_windowProgr = 1; } } GUI.matrix = Matrix4x4.identity; GUI.depth = -99; if (main_windowStat != WindowStat.HIDDEN) { GUILayout.Window(windowIDbase, new Rect(Screen.width - main_windowProgr * 200, (Screen.height - 200) / 2, 200, 200), main_WindowGUI, "MechJeb", GUILayout.Width(200), GUILayout.Height(200)); } GUI.depth = -98; int wid = 1; foreach (ComputerModule module in modules) { if (module.enabled) { module.drawGUI(windowIDbase + wid); } wid += 7; } if (firstDraw) { GUI.FocusControl("MechJebOpen"); firstDraw = false; } } }
public void loadSettings() { if (settings == null) { settings = new SettingsManager("MechJeb.cfg"); } foreach (ComputerModule module in modules) { module.onLoadGlobalSettings(settings); } main_windowStat = (WindowStat)settings["main_windowStat"].value_integer; main_windowProgr = (float)settings["main_windowProgr"].value_decimal; settingsChanged = false; settingsLoaded = true; settingsVersion = settings.version; }