private static void CreateKerbalViewer() { DisplaySelectProfession(); DisplaySelectGender(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Create", GUILayout.MaxWidth(80))) { bool kerbalFound = false; while (!kerbalFound) { SelectedKerbal = ModKerbal.CreateKerbal(); if (SelectedKerbal.Title == KerbalProfession && SelectedKerbal.Gender == gender) { kerbalFound = true; } } OnCreate = false; } if (GUILayout.Button("Cancel", GUILayout.MaxWidth(80))) { OnCreate = false; SelectedKerbal = null; } GUILayout.EndHorizontal(); }
private static void DisplayRosterListViewer() { try { string buttonToolTip = string.Empty; GUIStyle hdrlabelStyle = new GUIStyle(GUI.skin.label); hdrlabelStyle.fontStyle = FontStyle.Bold; GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); GUILayout.Label("", hdrlabelStyle, GUILayout.Width(5)); buttonToolTip = "Click to sort. Click again to sort the opposite direction."; if (GUILayout.Button(new GUIContent("Name", buttonToolTip), hdrlabelStyle, GUILayout.Width(150))) SortRosterList("Name"); Rect rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); if (GUILayout.Button(new GUIContent("|Gender", buttonToolTip), hdrlabelStyle, GUILayout.Width(50))) SortRosterList("Gender"); rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); if (GUILayout.Button(new GUIContent("|Profession", buttonToolTip), hdrlabelStyle, GUILayout.Width(75))) SortRosterList("Profession"); rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); if (GUILayout.Button(new GUIContent("|Skill", buttonToolTip), hdrlabelStyle, GUILayout.Width(35))) SortRosterList("Skill"); rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); if (GUILayout.Button(new GUIContent("|Experience", buttonToolTip), hdrlabelStyle, GUILayout.Width(75))) SortRosterList("Experience"); rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); if (GUILayout.Button(new GUIContent("|Status", buttonToolTip), hdrlabelStyle, GUILayout.Width(200))) SortRosterList("Status"); rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); GUILayout.EndHorizontal(); ScrollViewerPosition = GUILayout.BeginScrollView(ScrollViewerPosition, RMStyle.ScrollStyle, GUILayout.Height(230), GUILayout.Width(680)); foreach (ProtoCrewMember kerbal in RMAddon.AllCrew) { if (CanDisplayKerbal(kerbal)) { GUIStyle labelStyle = null; if (kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Dead || kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Missing) labelStyle = RMStyle.LabelStyleRed; else if (kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Assigned) labelStyle = RMStyle.LabelStyleYellow; else labelStyle = RMStyle.LabelStyle; // What vessel is this Kerbal Assigned to? string rosterDetails = ""; if (kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Assigned) { foreach (Vessel thisVessel in FlightGlobals.Vessels) { List<ProtoCrewMember> crew = thisVessel.GetVesselCrew(); foreach (ProtoCrewMember crewMember in crew) { if (crewMember == kerbal) { rosterDetails = "Assigned - " + thisVessel.GetName().Replace("(unloaded)", ""); break; } } } } else if (InstalledMods.IsDFInstalled && kerbal.type == ProtoCrewMember.KerbalType.Unowned) { // This kerbal could be frozen. Lets find out... rosterDetails = GetFrozenDetials(kerbal); labelStyle = RMStyle.LabelStyleCyan; } else { // Since the kerbal has no vessel assignment, lets show what their status... rosterDetails = kerbal.rosterStatus.ToString(); } string buttonText = string.Empty; GUILayout.BeginHorizontal(); buttonText = kerbal.name; buttonToolTip = "Opens the Edit section for this kerbal."; GUIStyle btnStyle = (SelectedKerbal == null || SelectedKerbal.Kerbal != kerbal) ? RMStyle.ButtonStyleLeft : RMStyle.ButtonToggledStyleLeft; if (GUILayout.Button(new GUIContent(buttonText, buttonToolTip), btnStyle, GUILayout.Width(160))) { if (SelectedKerbal == null || SelectedKerbal.Kerbal != kerbal) { SelectedKerbal = new ModKerbal(kerbal, false); SetProfessionFlag(); gender = SelectedKerbal.Gender; } else { SelectedKerbal = null; gender = ProtoCrewMember.Gender.Male; } } rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 50 - ScrollViewerPosition.y); GUILayout.Label(kerbal.gender.ToString(), labelStyle, GUILayout.Width(50)); GUILayout.Label(kerbal.experienceTrait.Title, labelStyle, GUILayout.Width(75)); GUILayout.Label(kerbal.experienceLevel.ToString(), labelStyle, GUILayout.Width(35)); GUILayout.Label(kerbal.experience.ToString(), labelStyle, GUILayout.Width(75)); GUILayout.Label(rosterDetails, labelStyle, GUILayout.Width(240)); //if (!RMSettings.RealismMode || kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Available) // GUI.enabled = true; //else // GUI.enabled = false; //buttonText = (SelectedKerbal == null || SelectedKerbal.Kerbal != kerbal) ? "Edit" : "Cancel"; //if (GUI.enabled) // buttonToolTip = (SelectedKerbal == null || SelectedKerbal.Kerbal != kerbal) ? "Edit this Kerbal's characteristics" : "Cancel any changes to this Kerbal"; //else // buttonToolTip = "Kerbal is not available at this time.\r\nEditing is disabled"; //if (GUILayout.Button(new GUIContent(buttonText, buttonToolTip), GUILayout.Width(60))) //{ // if (SelectedKerbal == null || SelectedKerbal.Kerbal != kerbal) // { // SelectedKerbal = new ModKerbal(kerbal, false); // SetProfessionFlag(); // } // else // { // SelectedKerbal = null; // } //} //rect = GUILayoutUtility.GetLastRect(); //if (Event.current.type == EventType.Repaint && ShowToolTips == true) // ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 50 - ScrollViewerPosition.y); // if (HighLogic.LoadedScene != GameScenes.SPACECENTER && ((RMSettings.RealismMode && RMAddon.IsPreLaunch) || !RMSettings.RealismMode) && kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Available && FlightGlobals.ActiveVessel != null && !RMAddon.VesselIsFull(FlightGlobals.ActiveVessel)) // { // GUI.enabled = true; // buttonText = "Add"; // buttonToolTip = "Adds a kerbal to the Active Vessel,\r\nin the first available seat."; // } // else if ((kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Dead && kerbal.type != ProtoCrewMember.KerbalType.Unowned) || kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Missing) // { // GUI.enabled = true; // buttonText = "Respawn"; // buttonToolTip = "Brings a Kerbal back to life.\r\nWill then become available."; // } // else if (HighLogic.LoadedScene != GameScenes.SPACECENTER && ((RMSettings.RealismMode && RMAddon.IsPreLaunch) || !RMSettings.RealismMode) && kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Assigned && FlightGlobals.ActiveVessel.GetVesselCrew().Contains(kerbal)) // { // GUI.enabled = true; // buttonText = "Remove"; // buttonToolTip = "Removes a Kerbal from the active vessel.\r\nWill then become available."; // } // else if (HighLogic.LoadedScene != GameScenes.SPACECENTER && (RMSettings.RealismMode && !RMAddon.IsPreLaunch) && kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Available) // { // GUI.enabled = false; // buttonText = "Add"; // buttonToolTip = "Add Disabled. Realism Settings are preventing this action.\r\nTo add a Kerbal, Change your realism Settings."; // } // else // { // GUI.enabled = false; // buttonText = "--"; // buttonToolTip = "Kerbal is not available (" + kerbal.rosterStatus + ").\r\nCurrent status does not allow any action."; // } // if (GUILayout.Button(new GUIContent(buttonText, buttonToolTip), GUILayout.Width(70))) // { // if (buttonText == "Add") // RMAddon.AddCrewMember(kerbal, FlightGlobals.ActiveVessel); // else if (buttonText == "Respawn") // RMAddon.RespawnKerbal(kerbal); // else if (buttonText == "Remove") // { // // get part... // Part part = RMAddon.FindKerbalPart(kerbal); // if (part != null) // RMAddon.RemoveCrewMember(kerbal, part); // } // } // rect = GUILayoutUtility.GetLastRect(); // if (Event.current.type == EventType.Repaint && ShowToolTips == true) // ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 50 - ScrollViewerPosition.y); GUILayout.EndHorizontal(); GUI.enabled = true; } } GUILayout.EndVertical(); GUILayout.EndScrollView(); } catch (Exception ex) { Utilities.LogMessage(string.Format(" in RosterListViewer. Error: {0} \r\n\r\n{1}", ex.Message, ex.StackTrace), "Error", true); } }
private static void DisplayRosterListViewer() { try { string buttonToolTip = string.Empty; GUIStyle hdrlabelStyle = new GUIStyle(GUI.skin.label); hdrlabelStyle.fontStyle = FontStyle.Bold; GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); GUILayout.Label("", hdrlabelStyle, GUILayout.Width(5)); buttonToolTip = "Click to sort. Click again to sort the opposite direction."; if (GUILayout.Button(new GUIContent("Name", buttonToolTip), hdrlabelStyle, GUILayout.Width(150))) { SortRosterList("Name"); } Rect rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) { ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); } if (GUILayout.Button(new GUIContent("|Gender", buttonToolTip), hdrlabelStyle, GUILayout.Width(50))) { SortRosterList("Gender"); } rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) { ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); } if (GUILayout.Button(new GUIContent("|Profession", buttonToolTip), hdrlabelStyle, GUILayout.Width(75))) { SortRosterList("Profession"); } rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) { ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); } if (GUILayout.Button(new GUIContent("|Skill", buttonToolTip), hdrlabelStyle, GUILayout.Width(35))) { SortRosterList("Skill"); } rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) { ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); } if (GUILayout.Button(new GUIContent("|Experience", buttonToolTip), hdrlabelStyle, GUILayout.Width(75))) { SortRosterList("Experience"); } rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) { ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); } if (GUILayout.Button(new GUIContent("|Status", buttonToolTip), hdrlabelStyle, GUILayout.Width(200))) { SortRosterList("Status"); } rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) { ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 5 - ScrollViewerPosition.y); } GUILayout.EndHorizontal(); ScrollViewerPosition = GUILayout.BeginScrollView(ScrollViewerPosition, RMStyle.ScrollStyle, GUILayout.Height(230), GUILayout.Width(680)); foreach (ProtoCrewMember kerbal in RMAddon.AllCrew) { if (CanDisplayKerbal(kerbal)) { GUIStyle labelStyle = null; if (kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Dead || kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Missing) { labelStyle = RMStyle.LabelStyleRed; } else if (kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Assigned) { labelStyle = RMStyle.LabelStyleYellow; } else { labelStyle = RMStyle.LabelStyle; } // What vessel is this Kerbal Assigned to? string rosterDetails = ""; if (kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Assigned) { foreach (Vessel thisVessel in FlightGlobals.Vessels) { List <ProtoCrewMember> crew = thisVessel.GetVesselCrew(); foreach (ProtoCrewMember crewMember in crew) { if (crewMember == kerbal) { rosterDetails = "Assigned - " + thisVessel.GetName().Replace("(unloaded)", ""); break; } } } } else if (InstalledMods.IsDFInstalled && kerbal.type == ProtoCrewMember.KerbalType.Unowned) { // This kerbal could be frozen. Lets find out... rosterDetails = GetFrozenDetials(kerbal); labelStyle = RMStyle.LabelStyleCyan; } else { // Since the kerbal has no vessel assignment, lets show what their status... rosterDetails = kerbal.rosterStatus.ToString(); } string buttonText = string.Empty; GUILayout.BeginHorizontal(); buttonText = kerbal.name; buttonToolTip = "Opens the Edit section for this kerbal."; GUIStyle btnStyle = (SelectedKerbal == null || SelectedKerbal.Kerbal != kerbal) ? RMStyle.ButtonStyleLeft : RMStyle.ButtonToggledStyleLeft; if (GUILayout.Button(new GUIContent(buttonText, buttonToolTip), btnStyle, GUILayout.Width(160))) { if (SelectedKerbal == null || SelectedKerbal.Kerbal != kerbal) { SelectedKerbal = new ModKerbal(kerbal, false); SetProfessionFlag(); gender = SelectedKerbal.Gender; } else { SelectedKerbal = null; gender = ProtoCrewMember.Gender.Male; } } rect = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.Repaint && ShowToolTips == true) { ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 50 - ScrollViewerPosition.y); } GUILayout.Label(kerbal.gender.ToString(), labelStyle, GUILayout.Width(50)); GUILayout.Label(kerbal.experienceTrait.Title, labelStyle, GUILayout.Width(75)); GUILayout.Label(kerbal.experienceLevel.ToString(), labelStyle, GUILayout.Width(35)); GUILayout.Label(kerbal.experience.ToString(), labelStyle, GUILayout.Width(75)); GUILayout.Label(rosterDetails, labelStyle, GUILayout.Width(240)); //if (!RMSettings.RealismMode || kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Available) // GUI.enabled = true; //else // GUI.enabled = false; //buttonText = (SelectedKerbal == null || SelectedKerbal.Kerbal != kerbal) ? "Edit" : "Cancel"; //if (GUI.enabled) // buttonToolTip = (SelectedKerbal == null || SelectedKerbal.Kerbal != kerbal) ? "Edit this Kerbal's characteristics" : "Cancel any changes to this Kerbal"; //else // buttonToolTip = "Kerbal is not available at this time.\r\nEditing is disabled"; //if (GUILayout.Button(new GUIContent(buttonText, buttonToolTip), GUILayout.Width(60))) //{ // if (SelectedKerbal == null || SelectedKerbal.Kerbal != kerbal) // { // SelectedKerbal = new ModKerbal(kerbal, false); // SetProfessionFlag(); // } // else // { // SelectedKerbal = null; // } //} //rect = GUILayoutUtility.GetLastRect(); //if (Event.current.type == EventType.Repaint && ShowToolTips == true) // ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 50 - ScrollViewerPosition.y); // if (HighLogic.LoadedScene != GameScenes.SPACECENTER && ((RMSettings.RealismMode && RMAddon.IsPreLaunch) || !RMSettings.RealismMode) && kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Available && FlightGlobals.ActiveVessel != null && !RMAddon.VesselIsFull(FlightGlobals.ActiveVessel)) // { // GUI.enabled = true; // buttonText = "Add"; // buttonToolTip = "Adds a kerbal to the Active Vessel,\r\nin the first available seat."; // } // else if ((kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Dead && kerbal.type != ProtoCrewMember.KerbalType.Unowned) || kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Missing) // { // GUI.enabled = true; // buttonText = "Respawn"; // buttonToolTip = "Brings a Kerbal back to life.\r\nWill then become available."; // } // else if (HighLogic.LoadedScene != GameScenes.SPACECENTER && ((RMSettings.RealismMode && RMAddon.IsPreLaunch) || !RMSettings.RealismMode) && kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Assigned && FlightGlobals.ActiveVessel.GetVesselCrew().Contains(kerbal)) // { // GUI.enabled = true; // buttonText = "Remove"; // buttonToolTip = "Removes a Kerbal from the active vessel.\r\nWill then become available."; // } // else if (HighLogic.LoadedScene != GameScenes.SPACECENTER && (RMSettings.RealismMode && !RMAddon.IsPreLaunch) && kerbal.rosterStatus == ProtoCrewMember.RosterStatus.Available) // { // GUI.enabled = false; // buttonText = "Add"; // buttonToolTip = "Add Disabled. Realism Settings are preventing this action.\r\nTo add a Kerbal, Change your realism Settings."; // } // else // { // GUI.enabled = false; // buttonText = "--"; // buttonToolTip = "Kerbal is not available (" + kerbal.rosterStatus + ").\r\nCurrent status does not allow any action."; // } // if (GUILayout.Button(new GUIContent(buttonText, buttonToolTip), GUILayout.Width(70))) // { // if (buttonText == "Add") // RMAddon.AddCrewMember(kerbal, FlightGlobals.ActiveVessel); // else if (buttonText == "Respawn") // RMAddon.RespawnKerbal(kerbal); // else if (buttonText == "Remove") // { // // get part... // Part part = RMAddon.FindKerbalPart(kerbal); // if (part != null) // RMAddon.RemoveCrewMember(kerbal, part); // } // } // rect = GUILayoutUtility.GetLastRect(); // if (Event.current.type == EventType.Repaint && ShowToolTips == true) // ToolTip = Utilities.SetActiveTooltip(rect, Position, GUI.tooltip, ref ToolTipActive, 30, 50 - ScrollViewerPosition.y); GUILayout.EndHorizontal(); GUI.enabled = true; } } GUILayout.EndVertical(); GUILayout.EndScrollView(); } catch (Exception ex) { Utilities.LogMessage(string.Format(" in RosterListViewer. Error: {0} \r\n\r\n{1}", ex.Message, ex.StackTrace), "Error", true); } }