示例#1
0
 public void AddNames(PawnNameSlot slot, Gender gender, IEnumerable <string> namesToAdd)
 {
     foreach (string item in namesToAdd)
     {
         NamesFor(slot, gender).Add(item);
     }
 }
        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);
        }
示例#3
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);
        }
示例#4
0
 public void AddNames(PawnNameSlot slot, Gender gender, IEnumerable <string> namesToAdd)
 {
     foreach (string current in namesToAdd)
     {
         this.NamesFor(slot, gender).Add(current);
     }
 }
示例#5
0
        public static XDocument TxtToXml(PawnNameSlot slot, Gender gender, string defName, string path)
        {
            int           count = 0;
            List <string> names = new List <string>();

            using (StreamReader sr = new StreamReader(path)) {
                while (sr.Peek() >= 0)
                {
                    names.Add(sr.ReadLine().Trim());
                }
            }
            XElement root = new XElement("Defs");
            XElement def  = new XElement("ShuffledNameDef", new XElement("shuffledNames"));

            foreach (string item in names)
            {
                if (!string.IsNullOrEmpty(item))
                {
                    if (item.Contains("//"))
                    {
                        if (def.Element("shuffledNames").HasElements)
                        {
                            root.Add(def);
                            root.Add(new XComment(item.Replace("//", "")));
                            def = new XElement("ShuffledNameDef", new XElement("shuffledNames"));
                        }
                        else
                        {
                            root.Add(new XComment(item.Replace("//", "")));
                        }
                    }
                    else
                    {
                        def.Element("shuffledNames").Add(new XElement("li", item));
                        count++;
                    }
                }
            }
            if (root.LastNode != def)
            {
                root.Add(def);
            }
            root.AddFirst(new XComment($"NOTE: The names disallow duplicates in the same file. Total: {count}."));
            Console.WriteLine(defName + ": " + count);
            count = 0;
            foreach (XElement curDef in root.Elements())
            {
                curDef.AddFirst(new XElement("defName", defName + "_" + count));
                curDef.Element("shuffledNames").AddBeforeSelf(
                    new XElement("slot", slot),
                    new XElement("gender", gender)
                    );
                count++;
            }
            return(new XDocument(new XDeclaration("1.0", "utf-8", null), root));
        }
        public static void AddNamesDedup(this NameBank nameBank, PawnNameSlot slot, Gender gender, IEnumerable <string> namesToAdd)
        {
            List <string> names = nameBank.NamesFor(slot, gender);

            foreach (string curName in namesToAdd)
            {
                if (!names.Contains(curName))
                {
                    names.Add(curName);
                }
            }
        }
示例#7
0
        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);
        }
示例#8
0
 public void AddNamesFromFile(PawnNameSlot slot, Gender gender, string fileName)
 {
     AddNames(slot, gender, GenFile.LinesFromFile("Names/" + fileName));
 }
示例#9
0
 private List <string> NamesFor(PawnNameSlot slot, Gender gender)
 {
     return(names[(uint)gender, (uint)slot]);
 }
 public static List <string> NamesFor(this NameBank nameBank, PawnNameSlot slot, Gender gender)
 {
     return(nameBank.AllNames()[(int)gender, (int)slot]);
 }