public static bool NameSingleIsUsed(string candidate)
 {
     foreach (Pawn item in PawnsFinder.AllMapsWorldAndTemporary_AliveOrDead)
     {
         NameSingle nameSingle = item.Name as NameSingle;
         if (nameSingle != null && nameSingle.Name == candidate)
         {
             return(true);
         }
     }
     return(false);
 }
示例#2
0
        public override bool ConfusinglySimilarTo(Name other)
        {
            NameSingle nameSingle = other as NameSingle;

            if (nameSingle != null && nameSingle.nameInt == this.nameInt)
            {
                return(true);
            }
            NameTriple nameTriple = other as NameTriple;

            return(nameTriple != null && nameTriple.Nick == this.nameInt);
        }
示例#3
0
        static private void nameAnimals()
        {
            //get all pawns on the map that are wild animals
            IEnumerable <Pawn> pawns = from p in Verse.Find.CurrentMap.mapPawns.AllPawnsSpawned
                                       where p.RaceProps.Animal &&
                                       !Find.CurrentMap.fogGrid.IsFogged(p.Position) &&
                                       p.Faction == null || p.Faction == Faction.OfInsects || p.Faction == Faction.OfMechanoids &&
                                       (p.mindState.Active || p.Dead)
                                       orderby(p.Name != null && !p.Name.Numerical) ? p.Name.ToStringShort : p.Label
                                       select p;

            //construct a name
            //RimWorld.JobGiver_Nuzzle jobg = new RimWorld.JobGiver_Nuzzle();
            //jobg.
            //Verse.JobDef
            //Job job = new Job(DefDatabase<JobDef>.GetNamed("GotoCellAndDraft"), thing);
            //workPawn.playerController.TakeOrderedJob(job);


            //give name to all
            //Pawn wild_animal = null;
            for (int i = 0; i < pawns.Count(); i++)
            {
                try {
                    if (pawns.ElementAt(i).Name == null)
                    {
                        string one_name_str = getNameFromList();

                        if (one_name_str == null || one_name_str.Length == 0)
                        {
                            Verse.Log.Message("NO NAMES FOR ANIMALS");
                            return;
                        }

                        Verse.NameSingle name = new Verse.NameSingle(one_name_str);

                        Verse.Log.Message("GIVE NAME (ANIMAL): " + one_name_str);
                        //Verse.Log.Message("named a schmatteo at " + i.ToString());
                        pawns.ElementAt(i).Name = name;

                        //TODO: write to list to make api call and notify server about new animals
                    }
                    //else {
                    //   wild_animal = pawns.ElementAt(i);
                    //}
                }
                catch (System.Exception e) {
                    Verse.Log.Message("RENAME EXCEPTION " + e.ToString());
                }
            }
        } // NAME ANIMALS END
示例#4
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            if (!(obj is NameSingle))
            {
                return(false);
            }
            NameSingle nameSingle = (NameSingle)obj;

            return(this.nameInt == nameSingle.nameInt);
        }
        public override bool ConfusinglySimilarTo(Name other)
        {
            NameSingle nameSingle = other as NameSingle;
            bool       result;

            if (nameSingle != null && nameSingle.nameInt == this.nameInt)
            {
                result = true;
            }
            else
            {
                NameTriple nameTriple = other as NameTriple;
                result = (nameTriple != null && nameTriple.Nick == this.nameInt);
            }
            return(result);
        }
 public static bool NameWordIsUsed(string singleName)
 {
     foreach (Name item in NameUseChecker.AllPawnsNamesEverUsed)
     {
         NameTriple nameTriple = item as NameTriple;
         if (nameTriple != null && (singleName == nameTriple.First || singleName == nameTriple.Nick || singleName == nameTriple.Last))
         {
             return(true);
         }
         NameSingle nameSingle = item as NameSingle;
         if (nameSingle != null && nameSingle.Name == singleName)
         {
             return(true);
         }
     }
     return(false);
 }
        public override bool Equals(object obj)
        {
            bool result;

            if (obj == null)
            {
                result = false;
            }
            else if (!(obj is NameSingle))
            {
                result = false;
            }
            else
            {
                NameSingle nameSingle = (NameSingle)obj;
                result = (this.nameInt == nameSingle.nameInt);
            }
            return(result);
        }
示例#8
0
        public override bool ConfusinglySimilarTo(Name other)
        {
            NameTriple nameTriple = other as NameTriple;

            if (nameTriple != null)
            {
                if (this.Nick != null && this.Nick == nameTriple.Nick)
                {
                    return(true);
                }
                if (this.First == nameTriple.First && this.Last == nameTriple.Last)
                {
                    return(true);
                }
            }
            NameSingle nameSingle = other as NameSingle;

            return(nameSingle != null && nameSingle.Name == this.Nick);
        }
示例#9
0
 public static bool NameWordIsUsed(string singleName)
 {
     foreach (Name current in NameUseChecker.AllPawnsNamesEverUsed)
     {
         NameTriple nameTriple = current as NameTriple;
         if (nameTriple != null && (singleName == nameTriple.First || singleName == nameTriple.Nick || singleName == nameTriple.Last))
         {
             bool result = true;
             return(result);
         }
         NameSingle nameSingle = current as NameSingle;
         if (nameSingle != null && nameSingle.Name == singleName)
         {
             bool result = true;
             return(result);
         }
     }
     return(false);
 }
示例#10
0
        private void CheckChangePawnKindName()
        {
            NameSingle nameSingle = this.pawn.Name as NameSingle;

            if (nameSingle != null && nameSingle.Numerical)
            {
                string kindLabel = this.pawn.KindLabel;
                if (!(nameSingle.NameWithoutNumber == kindLabel))
                {
                    int    number = nameSingle.Number;
                    string text   = this.pawn.KindLabel + " " + number;
                    if (!NameUseChecker.NameSingleIsUsed(text))
                    {
                        this.pawn.Name = new NameSingle(text, true);
                    }
                    else
                    {
                        this.pawn.Name = PawnBioAndNameGenerator.GeneratePawnName(this.pawn, NameStyle.Numeric, null);
                    }
                }
            }
        }
        private void CheckChangePawnKindName()
        {
            NameSingle nameSingle = pawn.Name as NameSingle;

            if (nameSingle == null || !nameSingle.Numerical)
            {
                return;
            }
            string kindLabel = pawn.KindLabel;

            if (!(nameSingle.NameWithoutNumber == kindLabel))
            {
                int    number = nameSingle.Number;
                string text   = pawn.KindLabel + " " + number;
                if (!NameUseChecker.NameSingleIsUsed(text))
                {
                    pawn.Name = new NameSingle(text, numerical: true);
                }
                else
                {
                    pawn.Name = PawnBioAndNameGenerator.GeneratePawnName(pawn, NameStyle.Numeric);
                }
            }
        }
示例#12
0
        static private void nameAnimals()
        {
            //get all pawns on the map that are wild animals
            IEnumerable <Pawn> pawns = from p in Verse.Find.CurrentMap.mapPawns.AllPawnsSpawned
                                       where p.RaceProps.Animal &&
                                       !Find.CurrentMap.fogGrid.IsFogged(p.Position) &&
                                       p.Faction == null || p.Faction == Faction.OfInsects &&
                                       (p.mindState.Active || p.Dead)
                                       orderby(p.Name != null && !p.Name.Numerical) ? p.Name.ToStringShort : p.Label
                                       select p;

            //construct a name
            //RimWorld.JobGiver_Nuzzle jobg = new RimWorld.JobGiver_Nuzzle();
            //jobg.
            //Verse.JobDef
            //Job job = new Job(DefDatabase<JobDef>.GetNamed("GotoCellAndDraft"), thing);
            //workPawn.playerController.TakeOrderedJob(job);


            //give name to all
            //Pawn wild_animal = null;
            for (int i = 0; i < pawns.Count(); i++)
            {
                if (pawns.ElementAt(i).Name == null)
                {
                    string one_name_str = namePool.RandomElement();

                    if (one_name_str == null || one_name_str.Length == 0)
                    {
                        Verse.Log.Message("no names in pool");
                        continue;
                    }

                    //try to get a name that does not already exist.
                    //finding a name may fail, since we try to get random elements from the pool
                    bool name_exists = false;
                    for (int f = 0; f < namePool.Count(); f++)
                    {
                        name_exists = false;
                        for (int j = 0; j < pawns.Count(); j++)
                        {
                            if (pawns.ElementAt(j).Name != null)
                            {
                                if (pawns.ElementAt(j).Name.ToString() == one_name_str)
                                {
                                    name_exists = true;
                                    break;
                                }
                            }
                        }

                        if (name_exists)
                        {
                            //Verse.Log.Message("name exists - pick new");
                            one_name_str = namePool.RandomElement();
                        }

                        if (!name_exists)
                        {
                            break;
                        }
                    }

                    if (name_exists)
                    {
                        Verse.Log.Message("NO UNUSED NAMES - WILL TRY AGAIN");
                        break;
                    }


                    Verse.NameSingle name = new Verse.NameSingle(one_name_str);

                    Verse.Log.Message("GIVE NAME: " + one_name_str);
                    //Verse.Log.Message("named a schmatteo at " + i.ToString());
                    pawns.ElementAt(i).Name = name;

                    //TODO: write to list to make api call and notify server about new animals
                }
                //else {
                //   wild_animal = pawns.ElementAt(i);
                //}
            }
        } // NAME ANIMALS END