void FailureWindow(int id) { GUILayout.BeginVertical(); pos = GUILayout.BeginScrollView(pos); foreach (var part in FlightGlobals.ActiveVessel.Parts) { // Count all the failures on the part foreach (nsDangIt.FailureModule fm in part.Modules.OfType <nsDangIt.FailureModule>()) { if (fm.HasFailed) { GUILayout.BeginHorizontal(); if (GUILayout.Button(part.partInfo.title)) { if (FailureModule.phl.HighlightListContains(failureWinHighlightID, part)) { FailureModule.phl.RemovePartFromList(failureWinHighlightID, part); } else { FailureModule.phl.AddPartToHighlight(failureWinHighlightID, part); } } GUILayout.EndHorizontal(); } } } GUILayout.EndScrollView(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Close")) { isVisible = false; FailureModule.phl.PauseHighlighting(FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id], false); foreach (var p in Parts) { FailureModule.phl.DisablePartHighlighting(failureWinHighlightID, p); } } if (GUILayout.Button("Mute All")) { AlarmManager alarmManager = FindObjectOfType <AlarmManager>(); if (alarmManager != null) { alarmManager.RemoveAllAlarms(); } } if (GUILayout.Button("Disable All Highlighting")) { foreach (var p in FlightGlobals.ActiveVessel.Parts) { if (FailureModule.phl.HighlightListContains(FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id], p)) { FailureModule.phl.PauseHighlighting(FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id], true); Parts.Add(p); } } FailureModule.phl.EmptyList(failureWinHighlightID); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Permenantly disable current highlighted failures")) { foreach (var p in FlightGlobals.ActiveVessel.Parts) { if (FailureModule.phl.HighlightListContains(FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id], p)) { Log.Info("Disabling highlighted part: " + p.partInfo.title); if (!FailureModule.phl.RemovePartFromList(FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id], p)) { Log.Error("Error removing part from list: " + FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id] + ", part: " + p.partInfo.title); } AlarmManager.RemovePartFailure(p); foreach (FailureModule fm in p.Modules.OfType <FailureModule>()) { if (fm.HasFailed) { fm.DisableAlarm(); } } } } FailureModule.phl.EmptyList(failureWinHighlightID); Parts.Clear(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); UnityEngine.GUI.DragWindow(); }