コード例 #1
0
        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);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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());
        }