private void AssureThatOnlyOneIsSelected(Func <TemporaryGUIContainer, bool> getter, Action <TemporaryGUIContainer, bool> setter, ref TemporaryGUIContainer selectedField) { var startingGuis = guis.Where(gui => gui != null && getter.Invoke(gui)).ToArray(); switch (startingGuis.Length) { case 0: break; case 1: selectedField = startingGuis[0]; break; default: if (selectedField == null) { selectedField = startingGuis[0]; } foreach (var gui in startingGuis) { if (gui != selectedField) { setter.Invoke(gui, false); } } break; } }
private void SelectActive(Func <TemporaryGUIContainer, bool> getter, ref TemporaryGUIContainer selectedField) { var activeGuis = guis.Where(gui => gui != null && getter.Invoke(gui)).ToArray(); selectedField = activeGuis.Length == 1 ? activeGuis[0] : null; if (selectedField != null && (selectedField.guiSwitcher == null || selectedField.name.Length == 0)) { selectedField = null; } }