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); }
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); }
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); }