예제 #1
0
        public static TaleData_Pawn GenerateFrom(Pawn pawn)
        {
            TaleData_Pawn taleData_Pawn = new TaleData_Pawn();

            taleData_Pawn.pawn                         = pawn;
            taleData_Pawn.kind                         = pawn.kindDef;
            taleData_Pawn.faction                      = pawn.Faction;
            taleData_Pawn.gender                       = (pawn.RaceProps.hasGenders ? pawn.gender : Gender.None);
            taleData_Pawn.age                          = pawn.ageTracker.AgeBiologicalYears;
            taleData_Pawn.chronologicalAge             = pawn.ageTracker.AgeChronologicalYears;
            taleData_Pawn.everBeenColonistOrTameAnimal = PawnUtility.EverBeenColonistOrTameAnimal(pawn);
            taleData_Pawn.everBeenQuestLodger          = PawnUtility.EverBeenQuestLodger(pawn);
            taleData_Pawn.isFactionLeader              = (pawn.Faction != null && pawn.Faction.leader == pawn);
            if (pawn.royalty != null)
            {
                taleData_Pawn.royalTitles = new List <RoyalTitle>();
                foreach (RoyalTitle item in pawn.royalty.AllTitlesForReading)
                {
                    taleData_Pawn.royalTitles.Add(new RoyalTitle(item));
                }
            }
            TaggedString text = "";

            PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref text, pawn);
            taleData_Pawn.relationInfo = text.Resolve();
            if (pawn.story != null)
            {
                taleData_Pawn.title = pawn.story.title;
            }
            if (pawn.RaceProps.Humanlike)
            {
                taleData_Pawn.name = pawn.Name;
                if (pawn.equipment.Primary != null)
                {
                    taleData_Pawn.primaryEquipment = pawn.equipment.Primary.def;
                }
                if (pawn.apparel.WornApparel.TryRandomElement(out Apparel result))
                {
                    taleData_Pawn.notableApparel = result.def;
                }
            }
            return(taleData_Pawn);
        }