Example #1
0
        public string GetName(REB_NameSlot slot, Gender gender = 0, bool checkIfAlreadyUsed = true)
        {
            string        str;
            List <string> strs = this.NamesFor(slot, gender);
            int           num  = 0;

            if (strs.Count == 0)
            {
                Log.Error(string.Concat(new object[] { "Name list for gender=", gender, " slot=", slot, " is empty." }));
                return("Errorname");
            }
            while (true)
            {
                str = strs.RandomElement <string>();
                if (checkIfAlreadyUsed && !NameUseChecker.NameWordIsUsed(str))
                {
                    return(str);
                }
                num++;
                if (num > 50)
                {
                    break;
                }
            }
            return(str);
        }
 public static Name GeneratePawnName(Pawn pawn, NameStyle style = NameStyle.Full, string forcedLastName = null)
 {
     if (style == NameStyle.Full)
     {
         RulePackDef nameGenerator = pawn.RaceProps.GetNameGenerator(pawn.gender);
         if (nameGenerator != null)
         {
             string name = NameGenerator.GenerateName(nameGenerator, (string x) => !new NameSingle(x, false).UsedThisGame, false, null);
             return(new NameSingle(name, false));
         }
         if (pawn.Faction != null && pawn.Faction.def.pawnNameMaker != null)
         {
             string rawName = NameGenerator.GenerateName(pawn.Faction.def.pawnNameMaker, delegate(string x)
             {
                 NameTriple nameTriple4 = NameTriple.FromString(x);
                 nameTriple4.ResolveMissingPieces(forcedLastName);
                 return(!nameTriple4.UsedThisGame);
             }, false, null);
             NameTriple nameTriple = NameTriple.FromString(rawName);
             nameTriple.CapitalizeNick();
             nameTriple.ResolveMissingPieces(forcedLastName);
             return(nameTriple);
         }
         if (pawn.RaceProps.nameCategory != PawnNameCategory.NoName)
         {
             if (Rand.Value < 0.5f)
             {
                 NameTriple nameTriple2 = PawnBioAndNameGenerator.TryGetRandomUnusedSolidName(pawn.gender, forcedLastName);
                 if (nameTriple2 != null)
                 {
                     return(nameTriple2);
                 }
             }
             return(PawnBioAndNameGenerator.GeneratePawnName_Shuffled(pawn, forcedLastName));
         }
         Log.Error("No name making method for " + pawn);
         NameTriple nameTriple3 = NameTriple.FromString(pawn.def.label);
         nameTriple3.ResolveMissingPieces(null);
         return(nameTriple3);
     }
     else
     {
         if (style == NameStyle.Numeric)
         {
             int    num = 1;
             string text;
             while (true)
             {
                 text = pawn.KindLabel + " " + num.ToString();
                 if (!NameUseChecker.NameSingleIsUsed(text))
                 {
                     break;
                 }
                 num++;
             }
             return(new NameSingle(text, true));
         }
         throw new InvalidOperationException();
     }
 }
        public string GetName(PawnNameSlot slot, Gender gender = Gender.None, bool checkIfAlreadyUsed = true)
        {
            List <string> list = this.NamesFor(slot, gender);
            int           num  = 0;

            if (list.Count == 0)
            {
                Log.Error(string.Concat(new object[]
                {
                    "Name list for gender=",
                    gender,
                    " slot=",
                    slot,
                    " is empty."
                }), false);
                return("Errorname");
            }
            string text;

            for (;;)
            {
                text = list.RandomElement <string>();
                if (checkIfAlreadyUsed && !NameUseChecker.NameWordIsUsed(text))
                {
                    break;
                }
                num++;
                if (num > 50)
                {
                    return(text);
                }
            }
            return(text);
        }
Example #4
0
        public string GetName(PawnNameSlot slot, Gender gender = Gender.None)
        {
            List <string> list = this.NamesFor(slot, gender);
            int           num  = 0;

            if (list.Count == 0)
            {
                Log.Error("Name list for gender=" + gender + " slot=" + slot + " is empty.");
                return("Errorname");
            }
            string text;

            while (true)
            {
                text = list.RandomElement();
                if (!NameUseChecker.NameWordIsUsed(text))
                {
                    return(text);
                }
                num++;
                if (num > 50)
                {
                    break;
                }
            }
            return(text);
        }
Example #5
0
        public static Name _GeneratePawnName(Pawn pawn, NameStyle style = NameStyle.Full, string forcedLastName = null)
        {
            if (style == NameStyle.Full)
            {
                if (rnd.NextDouble() < 0.2)
                {
                    if (names [pawn.gender].Count == 0)
                    {
                        Log.Message(pawn.gender.ToString() + " Name database reset");
                        Messages.Message(pawn.gender.ToString() + " Name database reset", MessageSound.Silent);

                        // pawn.gender
                        names[pawn.gender] = new List <NameTriple>(originalNames[pawn.gender]);
                    }

                    NameTriple name;
                    names[pawn.gender].TryRandomElement(out name);
                    names[pawn.gender].Remove(name);
                    return(name);
                }
                else
                {
                    return(GeneratePawnName(pawn, style, forcedLastName));
                }
            }
            else
            {
                if (style == NameStyle.Numeric)
                {
                    int    num = 1;
                    string text;
                    while (true)
                    {
                        text = pawn.KindLabel + " " + num.ToString();
                        if (!NameUseChecker.NameSingleIsUsed(text))
                        {
                            break;
                        }
                        num++;
                    }
                    return(new NameSingle(text, true));
                }
                throw new InvalidOperationException();
            }
        }
        public static Name _GeneratePawnName(Pawn pawn, NameStyle style = NameStyle.Full, string forcedLastName = null)
        {
            if (style == NameStyle.Full)
            {
                NameTriple name;

                if (solidNames[pawn.gender].Count <= 0)
                {
                    Log.Message(pawn.gender.ToString() + " Name database reset");
                    Messages.Message(pawn.gender.ToString() + " Name database reset", MessageSound.Silent);

                    while (usedNames[pawn.gender].Count > 0)
                    {
                        solidNames[pawn.gender].Add(usedNames[pawn.gender].Dequeue());
                    }
                }

                solidNames[pawn.gender].TryRandomElement(out name);

                solidNames[pawn.gender].Remove(name);
                usedNames[pawn.gender].Enqueue(name);
                return(name);
            }
            else
            {
                if (style == NameStyle.Numeric)
                {
                    int    num = 1;
                    string text;
                    while (true)
                    {
                        text = pawn.KindLabel + " " + num.ToString();
                        if (!NameUseChecker.NameSingleIsUsedOnAnyMap(text))
                        {
                            break;
                        }
                        num++;
                    }
                    return(new NameSingle(text, true));
                }
                throw new InvalidOperationException();
            }
        }
        public string GetName(PawnNameSlot slot, Gender gender = Gender.None, bool checkIfAlreadyUsed = true)
        {
            List <string> list = NamesFor(slot, gender);
            int           num  = 0;

            if (list.Count == 0)
            {
                Log.Error(string.Concat("Name list for gender=", gender, " slot=", slot, " is empty."));
                return("Errorname");
            }
            string text;

            do
            {
                text = list.RandomElement();
                if (checkIfAlreadyUsed && !NameUseChecker.NameWordIsUsed(text))
                {
                    return(text);
                }
                num++;
            }while (num <= 50);
            return(text);
        }