public static NameTriple TryGetRandomUnusedSolidName(Gender gender, string requiredLastName = null) { NameTriple nameTriple = null; if (Rand.Value < 0.5f) { nameTriple = Prefs.RandomPreferredName(); if (nameTriple != null && (nameTriple.UsedThisGame || (requiredLastName != null && nameTriple.Last != requiredLastName))) { nameTriple = null; } } List <NameTriple> listForGender = PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Either); List <NameTriple> list = (gender != Gender.Male) ? PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Female) : PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Male); float num = ((float)listForGender.Count + 0.1f) / ((float)(listForGender.Count + list.Count) + 0.1f); List <NameTriple> list2; if (Rand.Value < num) { list2 = listForGender; } else { list2 = list; } NameTriple result; if (list2.Count == 0) { Log.Error("Empty solid pawn name list for gender: " + gender + ".", false); result = null; } else if (nameTriple != null && list2.Contains(nameTriple)) { result = nameTriple; } else { list2.Shuffle <NameTriple>(); NameTriple nameTriple2 = (from name in list2 where (requiredLastName == null || !(name.Last != requiredLastName)) && !name.UsedThisGame select name).FirstOrDefault <NameTriple>(); result = nameTriple2; } return(result); }
public static NameTriple TryGetRandomUnusedSolidName(Gender gender, string requiredLastName = null) { NameTriple nameTriple = null; if (Rand.Value < 0.5f) { nameTriple = Prefs.RandomPreferredName(); if (nameTriple != null && (nameTriple.UsedThisGame || (requiredLastName != null && nameTriple.Last != requiredLastName))) { nameTriple = null; } } List <NameTriple> listForGender = PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Either); List <NameTriple> list = (gender != Gender.Male) ? PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Female) : PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Male); float num = ((float)listForGender.Count + 0.1f) / ((float)(listForGender.Count + list.Count) + 0.1f); List <NameTriple> list2 = (!(Rand.Value < num)) ? list : listForGender; if (list2.Count == 0) { Log.Error("Empty solid pawn name list for gender: " + gender + "."); return(null); } if (nameTriple != null && list2.Contains(nameTriple)) { return(nameTriple); } list2.Shuffle(); return(list2.Where(delegate(NameTriple name) { if (requiredLastName != null && name.Last != requiredLastName) { return false; } if (name.UsedThisGame) { return false; } return true; }).FirstOrDefault()); }
public static NameTriple TryGetRandomUnusedSolidName(Gender gender, string requiredLastName = null) { List <NameTriple> listForGender = PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Either); List <NameTriple> list = ((gender == Gender.Male) ? PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Male) : PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Female)); float num = ((float)listForGender.Count + 0.1f) / ((float)(listForGender.Count + list.Count) + 0.1f); List <NameTriple> list2 = ((!(Rand.Value < num)) ? list : listForGender); if (list2.Count == 0) { Log.Error(string.Concat("Empty solid pawn name list for gender: ", gender, ".")); return(null); } if (Rand.Value < 0.5f) { tmpNames.Clear(); tmpNames.AddRange(Prefs.PreferredNames); tmpNames.Shuffle(); foreach (string tmpName in tmpNames) { NameTriple nameTriple = NameTriple.FromString(tmpName); if (list2.Contains(nameTriple) && !nameTriple.UsedThisGame && (requiredLastName == null || !(nameTriple.Last != requiredLastName))) { return(nameTriple); } } } list2.Shuffle(); return(list2.Where(delegate(NameTriple name) { if (requiredLastName != null && name.Last != requiredLastName) { return false; } return (!name.UsedThisGame) ? true : false; }).FirstOrDefault()); }