private bool SelectContentPackage(GUITickBox tickBox) { var contentPackage = tickBox.UserData as ContentPackage; if (contentPackage.CorePackage) { if (tickBox.Selected) { //make sure no other core packages are selected SelectedContentPackages.RemoveWhere(cp => cp.CorePackage && cp != contentPackage); SelectedContentPackages.Add(contentPackage); foreach (GUITickBox otherTickBox in tickBox.Parent.Children) { ContentPackage otherContentPackage = otherTickBox.UserData as ContentPackage; if (otherContentPackage == contentPackage) { continue; } otherTickBox.Selected = SelectedContentPackages.Contains(otherContentPackage); } } else if (SelectedContentPackages.Contains(contentPackage)) { //core packages cannot be deselected, only switched by selecting another core package new GUIMessageBox(TextManager.Get("Warning"), TextManager.Get("CorePackageRequiredWarning")); tickBox.Selected = true; return(true); } } else { if (tickBox.Selected) { SelectedContentPackages.Add(contentPackage); } else { SelectedContentPackages.Remove(contentPackage); } } UnsavedSettings = true; return(true); }