/// <summary> /// Check that a CrewMember name is unique within this Team /// </summary> internal void UniqueNameCheck(CrewMember cm) { var unqiue = false; var partialFailCount = 0; //if the name is already in use by another character, reset their name while (!unqiue) { if (partialFailCount < 5) { partialFailCount++; var firstNames = crewMembers.Select(c => c.Value.FirstName).Concat(RetiredCrew.Select(c => c.Value.FirstName)).Concat(Recruits.Select(c => c.Value.FirstName)).ToList(); var lastNames = crewMembers.Select(c => c.Value.LastName).Concat(RetiredCrew.Select(c => c.Value.LastName)).Concat(Recruits.Select(c => c.Value.LastName)).ToList(); if (firstNames.Contains(cm.FirstName) || lastNames.Contains(cm.LastName) || cm.Name == ManagerName) { cm.SelectRandomName(); } else { unqiue = true; } } else { if (crewMembers.ContainsKey(cm.Name) || RetiredCrew.ContainsKey(cm.Name) || Recruits.ContainsKey(cm.Name) || cm.Name == ManagerName) { cm.SelectRandomName(); } else { unqiue = true; } } } }