public void CreatePawnPreview(Colonist colonist, float left, float top, string Body, string Head, Clothing l1, Clothing l2, string Hair, Color Skin, Color color1, Color color2, Color HairColor) { Rect position = new Rect(left, top, 128f, 128f); string text = "Things/Pawn/Humanoid/Bodies/Naked_" + Body + "_Front"; Texture2D image = ContentFinder<Texture2D>.Get(text, true); GUI.color = Skin; GUI.Label(position, image); Texture2D image2 = voidTexture; if (l1 != null) { image2 = ContentFinder<Texture2D>.Get(l1.GraphicPath + "_" + Body + "_front", true); GUI.color = color1; GUI.Label(position, image2); } Texture2D image3 = voidTexture; if (l2 != null) { image3 = ContentFinder<Texture2D>.Get(l2.GraphicPath + "_" + Body + "_front", true); GUI.color = color2; GUI.Label(position, image3); } Rect position2 = new Rect(left, top - 30f, 128f, 128f); string arg_12B_0 = colonist.HeadGraphicPath; Texture2D image5 = ContentFinder<Texture2D>.Get(Head + "_front", true); GUI.color = Skin; GUI.Label(position2, image5); position2 = new Rect(left, top - 30f, 128f, 128f); string arg_179_0 = colonist.HairDef.GraphicPath; Texture2D image6 = ContentFinder<Texture2D>.Get(Hair + "_front", true); GUI.color = HairColor; GUI.Label(position2, image6); }
public static string ProObj(this Colonist c) { if (c.Gender == 1) { return("ProhimObj".Translate()); } return("ProherObj".Translate()); }
public static string ProSubjCap(this Colonist c) { if (c.Gender == 1) { return("ProheCap".Translate()); } return("ProsheCap".Translate()); }
public static string PossessiveCap(this Colonist c) { if (c.Gender == 1) { return("ProhisCap".Translate()); } return("ProherCap".Translate()); }
private static HairDef RandomColonistHairDefFor(Colonist colonist, FactionDef factionType) { IEnumerable <HairDef> source = from hair in DefDatabase <HairDef> .AllDefs where hair.hairTags.SharesElementWith(factionType.hairTags) select hair; return(source.RandomElementByWeight((HairDef hair) => ColonistHairChoiceLikelihoodFor(hair, colonist))); }
public ChangeClothing(Colonist c) { colonist = c; base.SetCentered(600f, 440f); category = LayerCategory.GameDialog; clearNonEditDialogs = false; absorbAllInput = true; forcePause = true; CreateClothingList(); SetClothingDefaults(); }
public ChangeClothing(Colonist c) { colonist = c; base.SetCentered(600f, 440f); category = LayerCategory.GameDialog; clearNonEditDialogs = false; absorbAllInput = true; forcePause = true; CreateClothingList(); SetClothingDefaults(); }
public ChangeHead(Colonist c) { colonist = c; base.SetCentered(600f, 440f); category = LayerCategory.GameDialog; clearNonEditDialogs = false; absorbAllInput = true; forcePause = true; thisHair = colonist.HairDef; CreateHairList(); CreateFaceList(); SetDefaults(); }
public ChangeHead(Colonist c) { colonist = c; base.SetCentered(600f, 440f); category = LayerCategory.GameDialog; clearNonEditDialogs = false; absorbAllInput = true; forcePause = true; thisHair = colonist.HairDef; CreateHairList(); CreateFaceList(); SetDefaults(); }
private static float ColonistHairChoiceLikelihoodFor(HairDef hair, Colonist colonist) { if (colonist.Gender == 0) { return(100f); } if (colonist.Gender == 1) { switch (hair.hairGender) { case HairGender.Male: return(70f); case HairGender.MaleUsually: return(30f); case HairGender.Any: return(60f); case HairGender.FemaleUsually: return(5f); case HairGender.Female: return(1f); } } if (colonist.Gender == 2) { switch (hair.hairGender) { case HairGender.Male: return(1f); case HairGender.MaleUsually: return(5f); case HairGender.Any: return(60f); case HairGender.FemaleUsually: return(30f); case HairGender.Female: return(70f); } } return(0f); }
public void CreatePawnPreview(Colonist colonist, float left, float top, string Body, string Head, Clothing l1, Clothing l2, string Hair, Color Skin, Color color1, Color color2, Color HairColor) { Rect position = new Rect(left, top, 128f, 128f); string text = "Things/Pawn/Humanoid/Bodies/Naked_" + Body + "_Front"; Texture2D image = ContentFinder <Texture2D> .Get(text, true); GUI.color = Skin; GUI.Label(position, image); Texture2D image2 = voidTexture; if (l1 != null) { image2 = ContentFinder <Texture2D> .Get(l1.GraphicPath + "_" + Body + "_front", true); GUI.color = color1; GUI.Label(position, image2); } Texture2D image3 = voidTexture; if (l2 != null) { image3 = ContentFinder <Texture2D> .Get(l2.GraphicPath + "_" + Body + "_front", true); GUI.color = color2; GUI.Label(position, image3); } Rect position2 = new Rect(left, top - 30f, 128f, 128f); string arg_12B_0 = colonist.HeadGraphicPath; Texture2D image5 = ContentFinder <Texture2D> .Get(Head + "_front", true); GUI.color = Skin; GUI.Label(position2, image5); position2 = new Rect(left, top - 30f, 128f, 128f); string arg_179_0 = colonist.HairDef.GraphicPath; Texture2D image6 = ContentFinder <Texture2D> .Get(Hair + "_front", true); GUI.color = HairColor; GUI.Label(position2, image6); }
private static float HairChoiceLikelihoodFor(HairDef hair, Colonist c) { if (c.Gender == 0) { return 100f; } if (c.Gender == 1) { switch (hair.hairGender) { case HairGender.Male: return 70f; case HairGender.MaleUsually: return 30f; case HairGender.Any: return 60f; case HairGender.FemaleUsually: return 5f; case HairGender.Female: return 1f; } } if (c.Gender == 2) { switch (hair.hairGender) { case HairGender.Male: return 1f; case HairGender.MaleUsually: return 5f; case HairGender.Any: return 60f; case HairGender.FemaleUsually: return 30f; case HairGender.Female: return 70f; } } return 0f; }
private static void AgeDown(Rect position, Colonist colonist) { if (colonist.Age > 16) { colonist.Age = colonist.Age - 1; GUI.Label(position, colonist.Age.ToString()); } }
public static void PawnsToColonists() { for (int p = 0; p < ColonistNum.Amount; p++) { if (ModdedMapInitParams.colonists[p] != null) { Colonist colonist = new Colonist(); colonist.Age = ModdedMapInitParams.colonists[p].age; colonist.Gender = (int)ModdedMapInitParams.colonists[p].gender; colonist.FirstName = ModdedMapInitParams.colonists[p].Name.first; colonist.NickName = ModdedMapInitParams.colonists[p].Name.nick; colonist.LastName = ModdedMapInitParams.colonists[p].Name.last; colonist.SkinColor = ModdedMapInitParams.colonists[p].story.skinColor; colonist.CrownType = ModdedMapInitParams.colonists[p].story.crownType; colonist.HeadGraphicPath = ModdedMapInitParams.colonists[p].story.headGraphicPath; colonist.HairColor = ModdedMapInitParams.colonists[p].story.hairColor; ColHairDef hair = new ColHairDef(); hair.DefName = ModdedMapInitParams.colonists[p].story.hairDef.defName; hair.GraphicPath = ModdedMapInitParams.colonists[p].story.hairDef.graphicPath; colonist.HairDef = hair; List <StoryTrait> traits = new List <StoryTrait>(); StoryTrait trait = new StoryTrait(); trait.TraitName = ModdedMapInitParams.colonists[p].story.traits.allTraits[0].def.label; traits.Add(trait); trait = new StoryTrait(); trait.TraitName = ModdedMapInitParams.colonists[p].story.traits.allTraits[1].def.label; traits.Add(trait); colonist.Traits = traits; List <Clothing> Outfit = new List <Clothing>(); ShirtList.Clear(); CoatList.Clear(); GenClothingList(); Clothing clothing = new Clothing(); clothing = ShirtList.RandomListElement <Clothing>(); Outfit.Add(clothing); clothing = new Clothing(); clothing = CoatList.RandomListElement <Clothing>(); Outfit.Add(clothing); colonist.Clothing = Outfit; List <Colonist_Skill> skills = new List <Colonist_Skill>(); for (int a = 0; a < ModdedMapInitParams.colonists[p].skills.skills.Count; a++) { Colonist_Skill skill = new Colonist_Skill(); skill.SkillName = ModdedMapInitParams.colonists[p].skills.skills[a].def.skillLabel; skill.SkillValue = ModdedMapInitParams.colonists[p].skills.skills[a].level; skill.SkillPassion = (int)ModdedMapInitParams.colonists[p].skills.skills[a].passion; skills.Add(skill); } colonist.Skills = skills; List <Colonist_Backstory> Backstories = new List <Colonist_Backstory>(); Colonist_Backstory backstory = new Colonist_Backstory(); backstory.StoryName = ModdedMapInitParams.colonists[p].story.childhood.title; backstory.BaseDescription = ModdedMapInitParams.colonists[p].story.childhood.baseDesc; backstory.StoryAge = 0; List <StorySkillGain> skillGains = new List <StorySkillGain>(); for (int i = 0; i < ModdedMapInitParams.colonists[p].story.childhood.skillGainsResolved.Count - 1; i++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = ModdedMapInitParams.colonists[p].story.childhood.skillGainsResolved.ElementAt(i).Key.skillLabel; skillGain.SkillValue = ModdedMapInitParams.colonists[p].story.childhood.skillGainsResolved.ElementAt(i).Value; skillGains.Add(skillGain); } backstory.SkillGains = skillGains; List <string> Restrictions = new List <string>(); foreach (WorkTypeDef work in ModdedMapInitParams.colonists[p].story.childhood.DisabledWorkTypes) { Restrictions.Add(work.defName); } backstory.WorkRestrictions = Restrictions; backstory.BodyTypeGlobal = ModdedMapInitParams.colonists[p].story.childhood.bodyTypeGlobal; backstory.BodyTypeMale = ModdedMapInitParams.colonists[p].story.childhood.bodyTypeMale; backstory.BodyTypeFemale = ModdedMapInitParams.colonists[p].story.childhood.bodyTypeFemale; Backstories.Add(backstory); backstory = new Colonist_Backstory(); backstory.StoryName = ModdedMapInitParams.colonists[p].story.adulthood.title; backstory.BaseDescription = ModdedMapInitParams.colonists[p].story.adulthood.baseDesc; backstory.StoryAge = 1; skillGains = new List <StorySkillGain>(); for (int i = 0; i < ModdedMapInitParams.colonists[p].story.adulthood.skillGainsResolved.Count - 1; i++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = ModdedMapInitParams.colonists[p].story.adulthood.skillGainsResolved.ElementAt(i).Key.skillLabel; skillGain.SkillValue = ModdedMapInitParams.colonists[p].story.adulthood.skillGainsResolved.ElementAt(i).Value; skillGains.Add(skillGain); } backstory.SkillGains = skillGains; Restrictions = new List <string>(); foreach (WorkTypeDef work in ModdedMapInitParams.colonists[p].story.adulthood.DisabledWorkTypes) { Restrictions.Add(work.defName); } backstory.WorkRestrictions = Restrictions; backstory.BodyTypeGlobal = ModdedMapInitParams.colonists[p].story.adulthood.bodyTypeGlobal; backstory.BodyTypeMale = ModdedMapInitParams.colonists[p].story.adulthood.bodyTypeMale; backstory.BodyTypeFemale = ModdedMapInitParams.colonists[p].story.adulthood.bodyTypeFemale; if (backstory.BodyTypeGlobal.ToString() != "Undefined") { colonist.BodyType = backstory.BodyTypeGlobal; } else { if (colonist.Gender == 1 && backstory.BodyTypeMale.ToString() != "Undefined") { colonist.BodyType = backstory.BodyTypeMale; } else if (colonist.Gender == 1 && backstory.BodyTypeMale.ToString() == "Undefined") { colonist.BodyType = BodyType.Male; } if (colonist.Gender == 2 && backstory.BodyTypeFemale.ToString() != "Undefined") { colonist.BodyType = backstory.BodyTypeFemale; } else if (colonist.Gender == 2 && backstory.BodyTypeFemale.ToString() == "Undefined") { colonist.BodyType = BodyType.Male; } } Backstories.Add(backstory); colonist.Backstory = Backstories; GenWeaponList(); colonist.Weapon = WeaponList.RandomListElement <string>(); colonist.SkillPool = 0; Population.Add(colonist); } } }
public static void RandomColonists() { Population.Clear(); ShirtList.Clear(); CoatList.Clear(); ClothingList.Clear(); allBackstories.Clear(); NameBank nameBank = NameShuffleDatabase.BankOf((NameCategory)1); GenClothingList(); GenHairList(); //Load in Backstories from BackstoryDatabase for (int a = 0; a < BackstoryDatabase.allBackstories.Count - 1; a++) { allBackstories.Add(BackstoryDatabase.allBackstories.ElementAt(a).Value); } List<Backstory> SortedBackstories = allBackstories.OrderBy(o => o.title).ToList(); allBackstories = SortedBackstories; //Generate new random colonists for (int i = 0; i < ColonistNum.Amount; i++) { Colonist colonist = new Colonist(); //Gen random colonist basic info int gender = UnityEngine.Random.Range(1, 100); if (gender > 50) { gender = 1; int body = UnityEngine.Random.Range(1, 4); if (body == 1) { colonist.BodyType = BodyType.Male; } else if (body == 2) { colonist.BodyType = BodyType.Thin; } else if (body == 3) { colonist.BodyType = BodyType.Hulk; } else if (body == 4) { colonist.BodyType = BodyType.Fat; } } else { gender = 2; int body = UnityEngine.Random.Range(1, 4); if (body == 1) { colonist.BodyType = BodyType.Female; } else if (body == 2) { colonist.BodyType = BodyType.Thin; } else if (body == 3) { colonist.BodyType = BodyType.Hulk; } else if (body == 4) { colonist.BodyType = BodyType.Fat; } } colonist.Gender = gender; colonist.FirstName = nameBank.GetName((Gender)colonist.Gender, (NameSlot)0); colonist.NickName = nameBank.GetName((Gender)colonist.Gender, (NameSlot)2); colonist.LastName = nameBank.GetName((Gender)0, (NameSlot)1); colonist.Age = UnityEngine.Random.Range(16, 70); //Gen colonist starting skills List<Colonist_Skill> skills = new List<Colonist_Skill>(); if (ColonistDifficulty.Difficulty == "Easy") { colonist.SkillPool = 40; } else if (ColonistDifficulty.Difficulty == "Normal") { colonist.SkillPool = 20; } else { colonist.SkillPool = 0; } for (int a = 0; a < 11; a++) { Colonist_Skill skill = new Colonist_Skill(); if (a == 0) { skill.SkillName = "Construction".Translate(); skill.SkillPassion = 1; } else if (a == 1) { skill.SkillName = "Growing".Translate(); skill.SkillPassion = 2; } else if (a == 2) { skill.SkillName = "Research".Translate(); skill.SkillPassion = 3; } else if (a == 3) { skill.SkillName = "Mining".Translate(); } else if (a == 4) { skill.SkillName = "Shooting".Translate(); } else if (a == 5) { skill.SkillName = "Melee".Translate(); } else if (a == 6) { skill.SkillName = "Social".Translate(); } else if (a == 7) { skill.SkillName = "Cooking".Translate(); } else if (a == 8) { skill.SkillName = "Medicine".Translate(); } else if (a == 9) { skill.SkillName = "Artistic".Translate(); } else if (a == 10) { skill.SkillName = "Crafting".Translate(); } skill.SkillValue = 0; skills.Add(skill); } colonist.Skills = skills; //Load Backstories childstories.Clear(); adultstories.Clear(); ChildStoryIndex = 0; AdultStoryIndex = 0; List<Colonist_Backstory> ColonistStory = new List<Colonist_Backstory>(); for (int a = 0; a < allBackstories.Count - 1; a++) { bool ChildStoryFound = false; bool AdultStoryFound = false; Colonist_Backstory story = new Colonist_Backstory(); if (allBackstories[a].slot == BackstorySlot.Childhood) { story.StoryName = allBackstories[a].title; story.StoryAge = 0; story.BaseDescription = allBackstories[a].baseDesc; story.BodyTypeFemale = allBackstories[a].bodyTypeFemale; story.BodyTypeMale = allBackstories[a].bodyTypeMale; story.BodyTypeGlobal = allBackstories[a].bodyTypeGlobal; story.StoryIndex = ChildStoryIndex; List<StorySkillGain> skillGains = new List<StorySkillGain>(); for (int b = 0; b < allBackstories[a].skillGainsResolved.Count - 1; b++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = allBackstories[a].skillGainsResolved.ElementAt(b).Key.skillLabel; skillGain.SkillValue = allBackstories[a].skillGainsResolved.ElementAt(b).Value; skillGains.Add(skillGain); } story.SkillGains = skillGains; List<string> workRestrictions = new List<string>(); foreach (WorkTypeDef work in allBackstories[a].DisabledWorkTypes) { workRestrictions.Add(work.defName); } story.WorkRestrictions = workRestrictions; for (int b = 0; b < childstories.Count - 1; b++) { if (childstories[b].StoryName == story.StoryName) { ChildStoryFound = true; } } if (ChildStoryFound == false) { childstories.Add(story); ChildStoryIndex = ChildStoryIndex + 1; } } if (colonist.Gender == 1) { if (allBackstories[a].slot == BackstorySlot.Adulthood) { if (allBackstories[a].bodyTypeMale == colonist.BodyType || allBackstories[a].bodyTypeGlobal == colonist.BodyType) { story.StoryName = allBackstories[a].title; story.StoryAge = 1; story.BaseDescription = allBackstories[a].baseDesc; story.BodyTypeFemale = allBackstories[a].bodyTypeFemale; story.BodyTypeMale = allBackstories[a].bodyTypeMale; story.BodyTypeGlobal = allBackstories[a].bodyTypeGlobal; story.StoryIndex = AdultStoryIndex; List<StorySkillGain> skillGains = new List<StorySkillGain>(); for (int b = 0; b < allBackstories[a].skillGainsResolved.Count - 1; b++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = allBackstories[a].skillGainsResolved.ElementAt(b).Key.skillLabel; skillGain.SkillValue = allBackstories[a].skillGainsResolved.ElementAt(b).Value; skillGains.Add(skillGain); } story.SkillGains = skillGains; List<string> workRestrictions = new List<string>(); foreach (WorkTypeDef work in allBackstories[a].DisabledWorkTypes) { workRestrictions.Add(work.defName); } story.WorkRestrictions = workRestrictions; for (int b = 0; b < ColonistManager.AdultStories.Count - 1; b++) { if (ColonistManager.AdultStories[b].StoryName == story.StoryName) { AdultStoryFound = true; } } if (AdultStoryFound == false) { ColonistManager.AdultStories.Add(story); AdultStoryIndex = AdultStoryIndex + 1; } } } } else if (colonist.Gender == 2) { if (allBackstories[a].slot == BackstorySlot.Adulthood) { if (allBackstories[a].bodyTypeFemale == colonist.BodyType || allBackstories[a].bodyTypeGlobal == colonist.BodyType) { story.StoryName = allBackstories[a].title; story.StoryAge = 1; story.BaseDescription = allBackstories[a].baseDesc; story.BodyTypeFemale = allBackstories[a].bodyTypeFemale; story.BodyTypeMale = allBackstories[a].bodyTypeMale; story.BodyTypeGlobal = allBackstories[a].bodyTypeGlobal; story.StoryIndex = AdultStoryIndex; List<StorySkillGain> skillGains = new List<StorySkillGain>(); for (int b = 0; b < allBackstories[a].skillGainsResolved.Count - 1; b++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = allBackstories[a].skillGainsResolved.ElementAt(b).Key.skillLabel; skillGain.SkillValue = allBackstories[a].skillGainsResolved.ElementAt(b).Value; skillGains.Add(skillGain); } story.SkillGains = skillGains; List<string> workRestrictions = new List<string>(); foreach (WorkTypeDef work in allBackstories[a].DisabledWorkTypes) { workRestrictions.Add(work.defName); } story.WorkRestrictions = workRestrictions; for (int b = 0; b < ColonistManager.AdultStories.Count - 1; b++) { if (ColonistManager.AdultStories[b].StoryName == story.StoryName) { AdultStoryFound = true; } } if (AdultStoryFound == false) { ColonistManager.AdultStories.Add(story); AdultStoryIndex = AdultStoryIndex + 1; } } } } } //Gen random childhood backstory ColonistStory.Add(childstories[UnityEngine.Random.Range(0, childstories.Count - 1)]); //Gen random adulthood backstory ColonistStory.Add(adultstories[UnityEngine.Random.Range(0, adultstories.Count - 1)]); colonist.Backstory = ColonistStory; //Gen random traits int rand_trait = 0; List<StoryTrait> StoryTraits = new List<StoryTrait>(); foreach (TraitDef trait in DefDatabase<TraitDef>.AllDefsListForReading) { StoryTrait storyTrait = new StoryTrait(); storyTrait.TraitName = trait.label; storyTrait.Effect = trait.effect; StoryTraits.Add(storyTrait); } StoryTrait storytrait = new StoryTrait(); storytrait = new StoryTrait(); rand_trait = UnityEngine.Random.Range(0, StoryTraits.Count - 1); storytrait.TraitName = StoryTraits[rand_trait].TraitName; storytrait.Effect = StoryTraits[rand_trait].Effect; storytrait.TraitDescription = StoryTraits[rand_trait].TraitDescription; StoryTraits.Add(storytrait); StoryTrait storytrait2 = new StoryTrait(); int rand_trait2 = 0; rand_trait2 = UnityEngine.Random.Range(0, StoryTraits.Count - 1); storytrait2.TraitName = StoryTraits[rand_trait2].TraitName; storytrait2.Effect = StoryTraits[rand_trait].Effect; storytrait2.TraitDescription = StoryTraits[rand_trait2].TraitDescription; StoryTraits.Add(storytrait2); colonist.Traits = StoryTraits; //Gen Apparel List<Clothing> Outfit = new List<Clothing>(); Clothing clothing = new Clothing(); clothing = ShirtList.RandomListElement<Clothing>(); Outfit.Add(clothing); clothing = new Clothing(); clothing = CoatList.RandomListElement<Clothing>(); Outfit.Add(clothing); colonist.Clothing = Outfit; //Gen Body colonist.SkinColor = RandomSkinColor(); colonist.CrownType = ((UnityEngine.Random.value >= 0.5f) ? CrownType.Narrow : CrownType.Average); colonist.HeadGraphicPath = GraphicDatabase_Head.GetHeadRandom((Gender)colonist.Gender, colonist.SkinColor, colonist.CrownType).graphicPath; //Gen Hair colonist.HairColor = RandomHairColor(colonist.SkinColor); ColHairDef hairDef = new ColHairDef(); if (colonist.Gender == 1) { hairDef = MaleHairList.RandomListElement<ColHairDef>(); } else if (colonist.Gender == 2) { hairDef = FemaleHairList.RandomListElement<ColHairDef>(); } colonist.HairDef = hairDef; //Set BodyType if (colonist.Backstory[1].BodyTypeGlobal.ToString() != "Undefined") { colonist.BodyType = colonist.Backstory[1].BodyTypeGlobal; } else { if (colonist.Gender == 1 && colonist.Backstory[1].BodyTypeMale.ToString() != "Undefined") { colonist.BodyType = colonist.Backstory[1].BodyTypeMale; } else if (colonist.Gender == 1 && colonist.Backstory[1].BodyTypeMale.ToString() == "Undefined") { colonist.BodyType = BodyType.Male; } if (colonist.Gender == 2 && colonist.Backstory[1].BodyTypeFemale.ToString() != "Undefined") { colonist.BodyType = colonist.Backstory[1].BodyTypeFemale; } else if (colonist.Gender == 2 && colonist.Backstory[1].BodyTypeFemale.ToString() == "Undefined") { colonist.BodyType = BodyType.Male; } } //Gen Weapon GenWeaponList(); colonist.Weapon = WeaponList.RandomListElement<string>(); //Add colonist to total population Population.Add(colonist); } }
private static void ResetStoryList(Colonist colonist, int index) { ColonistManager.AdultStories.Clear(); int adultStoryIndex = 0; for (int a = 0; a < ColonistManager.AllBackstories.Count - 1; a++) { bool AdultStoryFound = false; Colonist_Backstory story = new Colonist_Backstory(); if (colonist.Gender == 1) { if (ColonistManager.AllBackstories[a].slot == BackstorySlot.Adulthood) { if (ColonistManager.AllBackstories[a].bodyTypeMale == colonist.BodyType || ColonistManager.AllBackstories[a].bodyTypeGlobal == colonist.BodyType) { story.StoryName = ColonistManager.AllBackstories[a].title; story.StoryAge = 1; story.BaseDescription = ColonistManager.AllBackstories[a].baseDesc; story.BodyTypeFemale = ColonistManager.AllBackstories[a].bodyTypeFemale; story.BodyTypeMale = ColonistManager.AllBackstories[a].bodyTypeMale; story.BodyTypeGlobal = ColonistManager.AllBackstories[a].bodyTypeGlobal; story.StoryIndex = adultStoryIndex; List <StorySkillGain> skillGains = new List <StorySkillGain>(); for (int b = 0; b < ColonistManager.AllBackstories[a].skillGainsResolved.Count; b++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = ColonistManager.AllBackstories[a].skillGainsResolved.ElementAt(b).Key.skillLabel; skillGain.SkillValue = ColonistManager.AllBackstories[a].skillGainsResolved.ElementAt(b).Value; skillGains.Add(skillGain); } story.SkillGains = skillGains; List <string> workRestrictions = new List <string>(); foreach (WorkTypeDef work in ColonistManager.AllBackstories[a].DisabledWorkTypes) { workRestrictions.Add(work.defName); } story.WorkRestrictions = workRestrictions; for (int b = 0; b < ColonistManager.AdultStories.Count; b++) { if (ColonistManager.AdultStories[b].StoryName == story.StoryName) { AdultStoryFound = true; } } if (AdultStoryFound == false) { ColonistManager.AdultStories.Add(story); adultStoryIndex = adultStoryIndex + 1; } } } } else if (colonist.Gender == 2) { if (ColonistManager.AllBackstories[a].slot == BackstorySlot.Adulthood) { if (ColonistManager.AllBackstories[a].bodyTypeFemale == colonist.BodyType || ColonistManager.AllBackstories[a].bodyTypeGlobal == colonist.BodyType) { story.StoryName = ColonistManager.AllBackstories[a].title; story.StoryAge = 1; story.BaseDescription = ColonistManager.AllBackstories[a].baseDesc; story.BodyTypeFemale = ColonistManager.AllBackstories[a].bodyTypeFemale; story.BodyTypeMale = ColonistManager.AllBackstories[a].bodyTypeMale; story.BodyTypeGlobal = ColonistManager.AllBackstories[a].bodyTypeGlobal; story.StoryIndex = adultStoryIndex; List <StorySkillGain> skillGains = new List <StorySkillGain>(); for (int b = 0; b < ColonistManager.AllBackstories[a].skillGainsResolved.Count; b++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = ColonistManager.AllBackstories[a].skillGainsResolved.ElementAt(b).Key.skillLabel; skillGain.SkillValue = ColonistManager.AllBackstories[a].skillGainsResolved.ElementAt(b).Value; skillGains.Add(skillGain); } story.SkillGains = skillGains; List <string> workRestrictions = new List <string>(); foreach (WorkTypeDef work in ColonistManager.AllBackstories[a].DisabledWorkTypes) { workRestrictions.Add(work.defName); } story.WorkRestrictions = workRestrictions; for (int b = 0; b < ColonistManager.AdultStories.Count; b++) { if (ColonistManager.AdultStories[b].StoryName == story.StoryName) { AdultStoryFound = true; } } if (AdultStoryFound == false) { ColonistManager.AdultStories.Add(story); adultStoryIndex = adultStoryIndex + 1; } } } } } List <Colonist_Backstory> ColonistStory = new List <Colonist_Backstory>(); ColonistStory.Add(ColonistManager.ChildStories[colonist.Backstory[0].StoryIndex]); ColonistStory.Add(ColonistManager.AdultStories[index]); colonist.Backstory = ColonistStory; }
private static void WeaponDown(Rect position, Colonist colonist) { WeaponIndex = WeaponIndex - 1; if (WeaponIndex < 0 ) { WeaponIndex = ColonistManager.WeaponList.Count - 1; } colonist.Weapon = ColonistManager.WeaponList[WeaponIndex]; GUI.Label(position, colonist.Weapon); }
private static void DrawStyle(Rect innerRect3, Colonist colonist) { GUI.BeginGroup(innerRect3); GenFont.SetFontMedium(); GUI.Label(new Rect(0f, 0f, 200f, 30f), Language.FindText(LoadLanguage.language, "Style")); //Preview Rect position = new Rect(40f, 60f, 120f, 160f); GUI.Box(position, ""); common.CreatePawnPreview(colonist, position.x, position.y + 20, colonist.BodyType.ToString(), colonist.HeadGraphicPath, colonist.Clothing[0], colonist.Clothing[1], colonist.HairDef.GraphicPath, colonist.SkinColor, colonist.Clothing[0].Color, colonist.Clothing[1].Color, colonist.HairColor); //Buttons GUI.color = Color.white; if (Widgets.TextButton(new Rect(0f, position.height + 90f, 200f, 30f), Language.FindText(LoadLanguage.language, "Change Clothing"))) { Find.LayerStack.Add(new ChangeClothing(colonist)); } if (Widgets.TextButton(new Rect(0f, position.height + 140f, 200f, 30f), Language.FindText(LoadLanguage.language, "Change Head"))) { Find.LayerStack.Add(new ChangeHead(colonist)); } if (Widgets.TextButton(new Rect(0f, position.height + 190f, 200f, 30f), Language.FindText(LoadLanguage.language, "Change Body"))) { Find.LayerStack.Add(new ChangeBody(colonist)); } for (int d = 0; d < ColonistManager.WeaponList.Count - 1; d++) { if (col.Weapon == ColonistManager.WeaponList[d]) { WeaponIndex = d; } } //Weapon float posHeight = position.height + 245f; GenFont.SetFontSmall(); position = new Rect(0f, posHeight, 60f, 20f); GUI.Label(position, Language.FindText(LoadLanguage.language, "Weapon") + ":"); Rect position2 = new Rect(94f, posHeight, 100f, 24f); position = new Rect(65f, posHeight, 24f, 24f); if (Widgets.TextButton(position, "<")) { WeaponDown(position2, colonist); } GUI.Label(position2, ColonistManager.WeaponList[WeaponIndex].Translate()); position = new Rect(198f, posHeight, 24f, 24f); if (Widgets.TextButton(position, ">")) { WeaponUp(position2, colonist); } GUI.EndGroup(); }
private static void AgeUp(Rect position, Colonist colonist) { if (colonist.Age < 70) { colonist.Age = colonist.Age + 1; GUI.Label(position, colonist.Age.ToString()); } }
private static void DrawSkills(Rect innerRect, Colonist colonist) { GUI.BeginGroup(innerRect); GenFont.SetFontMedium(); GUI.Label(new Rect(0f, 0f, 200f, 30f), Language.FindText(LoadLanguage.language, "Skills")); GUI.Label(new Rect(0f, 35f, 200f, 30f), Language.FindText(LoadLanguage.language, "Skill Points") + ":" + colonist.SkillPool.ToString().Translate()); DrawSkillsOf(colonist, new Vector2(0f, 70f)); GUI.EndGroup(); }
private static void DrawSkillsOf(Colonist c, Vector2 Offset) { GenFont.SetFontSmall(); int num = 0; for (int i = 0; i < 11; i++) { float y = (float)num * 27f + Offset.y; DrawSkill(i, new Vector2(Offset.x, y), c); num++; } }
private static void DrawSkill(int index, Vector2 topLeft, Colonist colonist) { float num = 0f; num = 180f; float width = num - 180f - 6f; Rect rect = new Rect(topLeft.x, topLeft.y, num, 24f); if (rect.Contains(Event.current.mousePosition)) { GUI.DrawTexture(rect, HighlightColTex); } GUI.BeginGroup(rect); GUI.skin.label.alignment = TextAnchor.MiddleLeft; Rect position2 = new Rect(0f, 0f, 100f, rect.height); GUI.Label(position2, Language.FindText(LoadLanguage.language, colonist.Skills[index].SkillName) + ": "); Rect position3 = new Rect(120f, 0f, rect.height, rect.height); GUI.skin.label.alignment = TextAnchor.MiddleCenter; string text; text = colonist.Skills[index].SkillValue.ToString(); int SkillUpdate = 0; try { foreach (StorySkillGain a in colonist.Backstory[0].SkillGains) { if (colonist.Skills[index].SkillName == a.SkillName) { SkillUpdate = SkillUpdate + a.SkillValue; text = SkillUpdate.ToString(); } } foreach (StorySkillGain b in colonist.Backstory[1].SkillGains) { if (colonist.Skills[index].SkillName == b.SkillName) { SkillUpdate = SkillUpdate + b.SkillValue; text = SkillUpdate.ToString(); } } } catch (Exception e) { Log.Message(e.Message); } List<string> list = new List<string>(); if (colonist.Backstory[0].WorkRestrictions.Count > 0) { for (int a = 0; a < colonist.Backstory[0].WorkRestrictions.Count; a++) { if (colonist.Backstory[0].WorkRestrictions[a] == "Art") { string Restriction = "Artistic"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else if (colonist.Backstory[0].WorkRestrictions[a] == "Warden") { string Restriction = "Social"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else if (colonist.Backstory[0].WorkRestrictions[a] == "Doctor") { string Restriction = "Medicine"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else if (colonist.Backstory[0].WorkRestrictions[a] == "Caring") { string Restriction = "Medicine"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else if (colonist.Backstory[0].WorkRestrictions[a] == "Plant work") { string Restriction = "Growing"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else if (colonist.Backstory[0].WorkRestrictions[a] == "Violent") { string Restriction = "Melee"; if (!list.Contains(Restriction)) { list.Add(Restriction); } string Restriction2 = "Shooting"; if (!list.Contains(Restriction2)) { list.Add(Restriction2); } } else if (colonist.Backstory[0].WorkRestrictions[a] == "Hunting") { string Restriction = "Melee"; if (!list.Contains(Restriction)) { list.Add(Restriction); } string Restriction2 = "Shooting"; if (!list.Contains(Restriction2)) { list.Add(Restriction2); } } else if (colonist.Backstory[0].WorkRestrictions[a] == "Intellectual") { string Restriction = "Research"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else { list.Add(colonist.Backstory[0].WorkRestrictions[a]); } } } if (colonist.Backstory[1].WorkRestrictions.Count > 0) { for (int a = 0; a < colonist.Backstory[1].WorkRestrictions.Count; a++) { if (colonist.Backstory[1].WorkRestrictions[a] == "Art") { string Restriction = "Artistic"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else if (colonist.Backstory[1].WorkRestrictions[a] == "Warden") { string Restriction = "Social"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else if (colonist.Backstory[1].WorkRestrictions[a] == "Doctor") { string Restriction = "Medicine"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else if (colonist.Backstory[1].WorkRestrictions[a] == "Caring") { string Restriction = "Medicine"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else if (colonist.Backstory[1].WorkRestrictions[a] == "Plant work") { string Restriction = "Growing"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else if (colonist.Backstory[1].WorkRestrictions[a] == "Violent") { string Restriction = "Melee"; if (!list.Contains(Restriction)) { list.Add(Restriction); } string Restriction2 = "Shooting"; if (!list.Contains(Restriction2)) { list.Add(Restriction2); } } else if (colonist.Backstory[1].WorkRestrictions[a] == "Hunting") { string Restriction = "Melee"; if (!list.Contains(Restriction)) { list.Add(Restriction); } string Restriction2 = "Shooting"; if (!list.Contains(Restriction2)) { list.Add(Restriction2); } } else if (colonist.Backstory[1].WorkRestrictions[a] == "Intellectual") { string Restriction = "Research"; if (!list.Contains(Restriction)) { list.Add(Restriction); } } else { list.Add(colonist.Backstory[1].WorkRestrictions[a]); } } } if (list.Contains(colonist.Skills[index].SkillName)) { GUI.color = DisabledSkillColor; text = "-"; } else { text = (colonist.Skills[index].SkillValue + SkillUpdate).ToString(); Rect position4 = new Rect(85f, 0f, 24f, 24f); if (Widgets.TextButton(position4, "-")) { SkillDown(rect, index, colonist, SkillUpdate); } position3.x += 10; Rect position5 = new Rect(155f, 0f, 24f, 24f); if (Widgets.TextButton(position5, "+")) { SkillUp(rect, index, colonist, SkillUpdate); } } GUI.Label(position3, text.Translate()); GUI.color = Color.white; GUI.EndGroup(); //TooltipHandler.TipRegion(rect, colonist.Skills[index].SkillDescription); }
private static void DrawPassions(Rect rect, Colonist colonist) { GUI.BeginGroup(rect); GenFont.SetFontMedium(); Rect rect2 = new Rect(0f, 30f, 100f, 30f); Rect rect3 = new Rect(96f, 60f, 24f, 24f); Rect rect4 = new Rect(125f, 60f, 115f, 24f); Rect rect5 = new Rect(211f, 60f, 24f, 24f); Rect rect6 = new Rect(125f, 86f, 115f, 24f); Rect rect7 = new Rect(125f, 112f, 115f, 24f); GUI.Label(rect2, Language.FindText(LoadLanguage.language, "Passions")); rect2.y += 30; rect2.height = 24; for (int i = 0; i < colonist.Skills.Count; i++) { if (colonist.Skills[i].SkillPassion == 1) { MajorSkill = colonist.Skills[i].SkillName; } if (colonist.Skills[i].SkillPassion == 2) { MinorSkill1 = colonist.Skills[i].SkillName; } if (colonist.Skills[i].SkillPassion == 3) { MinorSkill2 = colonist.Skills[i].SkillName; } } GenFont.SetFontSmall(); GUI.Label(rect2, Language.FindText(LoadLanguage.language, "Major Passion") + ":"); if (Widgets.TextButton(rect3, "<")) { MajorSkillDown(rect4, colonist); } GUI.Label(rect4, Language.FindText(LoadLanguage.language, MajorSkill)); if (Widgets.TextButton(rect5, ">")) { MajorSkillUp(rect4, colonist); } rect2.y += 26; rect3.y += 26; rect5.y += 26; GUI.Label(rect2, Language.FindText(LoadLanguage.language, "Minor Passion") + ":"); if (Widgets.TextButton(rect3, "<")) { MinorSkill1Down(rect6, colonist); } GUI.Label(rect6, Language.FindText(LoadLanguage.language, MinorSkill1)); if (Widgets.TextButton(rect5, ">")) { MinorSkill1Up(rect6, colonist); } rect2.y += 26; rect3.y += 26; rect5.y += 26; GUI.Label(rect2, Language.FindText(LoadLanguage.language, "Minor Passion") + ":"); if (Widgets.TextButton(rect3, "<")) { MinorSkill2Down(rect7, colonist); } GUI.Label(rect7, Language.FindText(LoadLanguage.language, MinorSkill2)); if (Widgets.TextButton(rect5, ">")) { MinorSkill2Up(rect7, colonist); } GUI.EndGroup(); }
private static void DrawEnterName(Rect rect, Colonist colonist) { Rect rect2 = new Rect(rect); rect2.width *= 0.333f; Rect rect3 = new Rect(rect); rect3.width *= 0.333f; rect3.x += rect3.width; Rect rect4 = new Rect(rect); rect4.width *= 0.333f; rect4.x += rect3.width * 2f; string firstName = colonist.FirstName; string nickName = colonist.NickName; string lastName = colonist.LastName; DoNameInputRect(rect2, ref firstName, 12); colonist.FirstName = firstName; if (colonist.NickName == colonist.FirstName || colonist.NickName == colonist.LastName) { GUI.color = new Color(1f, 1f, 1f, 0.5f); } DoNameInputRect(rect3, ref nickName, 9); colonist.NickName = nickName; GUI.color = Color.white; DoNameInputRect(rect4, ref lastName, 12); colonist.LastName = lastName; TooltipHandler.TipRegion(rect2, "FirstNameDesc".Translate()); TooltipHandler.TipRegion(rect3, "ShortIdentifierDesc".Translate()); TooltipHandler.TipRegion(rect4, "LastNameDesc".Translate()); }
public static void WriteColonist(Colonist colonist, int i) { EnterNode("Colonist"); writer.WriteAttributeString("num", i.ToString()); EnterNode("BasicInfo"); writer.WriteAttributeString("Name", colonist.FirstName + " " + colonist.NickName + " " + colonist.LastName); ExitNode(); EnterNode("BasicInfo"); writer.WriteAttributeString("Age", colonist.Age.ToString()); ExitNode(); EnterNode("BasicInfo"); writer.WriteAttributeString("Gender", colonist.Gender.ToString()); ExitNode(); EnterNode("BasicInfo"); writer.WriteAttributeString("Trait1", colonist.Traits[0].TraitName); ExitNode(); EnterNode("BasicInfo"); writer.WriteAttributeString("Trait2", colonist.Traits[1].TraitName); ExitNode(); EnterNode("Graphics"); writer.WriteAttributeString("BodyType", colonist.BodyType.ToString()); ExitNode(); EnterNode("Graphics"); writer.WriteAttributeString("SkinColor", colonist.SkinColor.r.ToString() + "," + colonist.SkinColor.g.ToString() + "," + colonist.SkinColor.b.ToString() + "," + colonist.SkinColor.a.ToString()); ExitNode(); EnterNode("Graphics"); writer.WriteAttributeString("CrownType", colonist.CrownType.ToString()); ExitNode(); EnterNode("Graphics"); writer.WriteAttributeString("HeadGraphicPath", colonist.HeadGraphicPath); ExitNode(); EnterNode("Graphics"); writer.WriteAttributeString("HairColor", colonist.HairColor.r.ToString() + "," + colonist.HairColor.g.ToString() + "," + colonist.HairColor.b.ToString() + "," + colonist.HairColor.a.ToString()); ExitNode(); EnterNode("HairDef"); writer.WriteAttributeString("DefName", colonist.HairDef.DefName); writer.WriteAttributeString("GraphicPath", colonist.HairDef.GraphicPath); writer.WriteAttributeString("HairGender", colonist.HairDef.HairGender.ToString()); writer.WriteAttributeString("Label", colonist.HairDef.Label); ExitNode(); int b = 1; foreach (Clothing clothing in colonist.Clothing) { if (b == 1) { EnterNode("OnSkin"); } else { EnterNode("Shell"); } writer.WriteAttributeString("Layer", clothing.Layer); writer.WriteAttributeString("Label", clothing.Label); writer.WriteAttributeString("GraphicPath", clothing.GraphicPath); writer.WriteAttributeString("Color", clothing.Color.r.ToString() + "," + clothing.Color.g.ToString() + "," + clothing.Color.b.ToString() + "," + clothing.Color.a.ToString()); ExitNode(); b++; } EnterNode("Backstories"); EnterNode("Childhood"); writer.WriteAttributeString("Index", colonist.Backstory[0].StoryIndex.ToString()); ExitNode(); EnterNode("Adulthood"); writer.WriteAttributeString("Index", colonist.Backstory[1].StoryIndex.ToString()); ExitNode(); ExitNode(); EnterNode("Traits"); writer.WriteAttributeString("Trait1", colonist.Traits[0].TraitName); writer.WriteAttributeString("Trait2", colonist.Traits[1].TraitName); ExitNode(); EnterNode("SkillPool"); writer.WriteAttributeString("Amount", colonist.SkillPool.ToString()); ExitNode(); EnterNode("Skills"); for (int c = 0; c < colonist.Skills.Count; c++) { EnterNode("Skill" + c.ToString()); writer.WriteAttributeString("Value", colonist.Skills[c].SkillValue.ToString()); writer.WriteAttributeString("Passion", colonist.Skills[c].SkillPassion.ToString()); ExitNode(); } ExitNode(); EnterNode("Weapon"); writer.WriteAttributeString("Name", colonist.Weapon); ExitNode(); EnterNode("End"); ExitNode(); ExitNode(); }
private static void ResetStoryList(Colonist colonist, int index) { ColonistManager.AdultStories.Clear(); int adultStoryIndex = 0; for (int a = 0; a < ColonistManager.AllBackstories.Count - 1; a++) { bool AdultStoryFound = false; Colonist_Backstory story = new Colonist_Backstory(); if (colonist.Gender == 1) { if (ColonistManager.AllBackstories[a].slot == BackstorySlot.Adulthood) { if (ColonistManager.AllBackstories[a].bodyTypeMale == colonist.BodyType || ColonistManager.AllBackstories[a].bodyTypeGlobal == colonist.BodyType) { story.StoryName = ColonistManager.AllBackstories[a].title; story.StoryAge = 1; story.BaseDescription = ColonistManager.AllBackstories[a].baseDesc; story.BodyTypeFemale = ColonistManager.AllBackstories[a].bodyTypeFemale; story.BodyTypeMale = ColonistManager.AllBackstories[a].bodyTypeMale; story.BodyTypeGlobal = ColonistManager.AllBackstories[a].bodyTypeGlobal; story.StoryIndex = adultStoryIndex; List<StorySkillGain> skillGains = new List<StorySkillGain>(); for (int b = 0; b < ColonistManager.AllBackstories[a].skillGainsResolved.Count; b++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = ColonistManager.AllBackstories[a].skillGainsResolved.ElementAt(b).Key.skillLabel; skillGain.SkillValue = ColonistManager.AllBackstories[a].skillGainsResolved.ElementAt(b).Value; skillGains.Add(skillGain); } story.SkillGains = skillGains; List<string> workRestrictions = new List<string>(); foreach (WorkTypeDef work in ColonistManager.AllBackstories[a].DisabledWorkTypes) { workRestrictions.Add(work.defName); } story.WorkRestrictions = workRestrictions; for (int b = 0; b < ColonistManager.AdultStories.Count; b++) { if (ColonistManager.AdultStories[b].StoryName == story.StoryName) { AdultStoryFound = true; } } if (AdultStoryFound == false) { ColonistManager.AdultStories.Add(story); adultStoryIndex = adultStoryIndex + 1; } } } } else if (colonist.Gender == 2) { if (ColonistManager.AllBackstories[a].slot == BackstorySlot.Adulthood) { if (ColonistManager.AllBackstories[a].bodyTypeFemale == colonist.BodyType || ColonistManager.AllBackstories[a].bodyTypeGlobal == colonist.BodyType) { story.StoryName = ColonistManager.AllBackstories[a].title; story.StoryAge = 1; story.BaseDescription = ColonistManager.AllBackstories[a].baseDesc; story.BodyTypeFemale = ColonistManager.AllBackstories[a].bodyTypeFemale; story.BodyTypeMale = ColonistManager.AllBackstories[a].bodyTypeMale; story.BodyTypeGlobal = ColonistManager.AllBackstories[a].bodyTypeGlobal; story.StoryIndex = adultStoryIndex; List<StorySkillGain> skillGains = new List<StorySkillGain>(); for (int b = 0; b < ColonistManager.AllBackstories[a].skillGainsResolved.Count; b++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = ColonistManager.AllBackstories[a].skillGainsResolved.ElementAt(b).Key.skillLabel; skillGain.SkillValue = ColonistManager.AllBackstories[a].skillGainsResolved.ElementAt(b).Value; skillGains.Add(skillGain); } story.SkillGains = skillGains; List<string> workRestrictions = new List<string>(); foreach (WorkTypeDef work in ColonistManager.AllBackstories[a].DisabledWorkTypes) { workRestrictions.Add(work.defName); } story.WorkRestrictions = workRestrictions; for (int b = 0; b < ColonistManager.AdultStories.Count; b++) { if (ColonistManager.AdultStories[b].StoryName == story.StoryName) { AdultStoryFound = true; } } if (AdultStoryFound == false) { ColonistManager.AdultStories.Add(story); adultStoryIndex = adultStoryIndex + 1; } } } } } List<Colonist_Backstory> ColonistStory = new List<Colonist_Backstory>(); ColonistStory.Add(ColonistManager.ChildStories[colonist.Backstory[0].StoryIndex]); ColonistStory.Add(ColonistManager.AdultStories[index]); colonist.Backstory = ColonistStory; }
public ColonistCreationMenu(Colonist c) { col = c; base.SetCentered(ColonistCreationMenu.WinSize); category = LayerCategory.GameDialog; clearNonEditDialogs = true; absorbAllInput = true; forcePause = true; //Gen Traits and sort allTraits.Clear(); foreach (TraitDef trait in DefDatabase<TraitDef>.AllDefsListForReading) { StoryTrait storytrait = new StoryTrait(); storytrait.TraitName = trait.label; storytrait.Effect = trait.effect; allTraits.Add(storytrait); } List<StoryTrait> SortedTraits = allTraits.OrderBy(o => o.TraitName).ToList(); allTraits = SortedTraits; //Set Trait1 index for (int i = 0; i < allTraits.Count - 1; i++) { if (col.Traits[0].TraitName == allTraits[i].TraitName) { Trait1Index = i; } } //Set Trait2 index for (int a = 0; a < allTraits.Count - 1; a++) { if (col.Traits[1].TraitName == allTraits[a].TraitName) { Trait2Index = a; } } //Set Childhood index for (int b = 0; b < ColonistManager.ChildStories.Count - 1; b++) { if (col.Backstory[0].StoryName == ColonistManager.ChildStories[b].StoryName) { ChildStoryIndex = b; } } //Set Adulthood index for (int d = 0; d < ColonistManager.AdultStories.Count - 1; d++) { if (col.Backstory[1].StoryName == ColonistManager.AdultStories[d].StoryName) { AdultStoryIndex = d; } } //Set Weapon Index for (int d = 0; d < ColonistManager.WeaponList.Count - 1; d++) { if (col.Weapon == ColonistManager.WeaponList[d]) { WeaponIndex = d; } } }
public static string TextAdjustedFor(Colonist c, string baseText) { return baseText.Replace("NAME", c.NickName).Replace("HISCAP", c.PossessiveCap()).Replace("HIMCAP", c.ProObjCap()).Replace("HECAP", c.ProSubjCap()).Replace("HIS", c.Possessive()).Replace("HIM", c.ProObj()).Replace("HE", c.ProSubj()); }
public string FullDescriptionFor(List <StorySkillGain> SkillGains, List <string> WorkRestrictions, string desc, Colonist c) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(ModdedGenText.TextAdjustedFor(c, desc)); stringBuilder.AppendLine(); stringBuilder.AppendLine(); foreach (StorySkillGain gain in SkillGains) { stringBuilder.AppendLine(gain.SkillName + ": " + gain.SkillValue.ToString("+##;-##")); } stringBuilder.AppendLine(); foreach (string current in WorkRestrictions) { stringBuilder.AppendLine(current + " " + "disabled"); } return(stringBuilder.ToString()); }
public static void WriteColonist(Colonist colonist, int i) { EnterNode("Colonist"); writer.WriteAttributeString("num", i.ToString()); EnterNode("BasicInfo"); writer.WriteAttributeString("Name", colonist.FirstName + " " + colonist.NickName + " " + colonist.LastName); ExitNode(); EnterNode("BasicInfo"); writer.WriteAttributeString("Age", colonist.Age.ToString()); ExitNode(); EnterNode("BasicInfo"); writer.WriteAttributeString("Gender", colonist.Gender.ToString()); ExitNode(); EnterNode("BasicInfo"); writer.WriteAttributeString("Trait1", colonist.Traits[0].TraitName); ExitNode(); EnterNode("BasicInfo"); writer.WriteAttributeString("Trait2", colonist.Traits[1].TraitName); ExitNode(); EnterNode("Graphics"); writer.WriteAttributeString("BodyType", colonist.BodyType.ToString()); ExitNode(); EnterNode("Graphics"); writer.WriteAttributeString("SkinColor", colonist.SkinColor.r.ToString() + "," + colonist.SkinColor.g.ToString() + "," + colonist.SkinColor.b.ToString() + "," + colonist.SkinColor.a.ToString()); ExitNode(); EnterNode("Graphics"); writer.WriteAttributeString("CrownType", colonist.CrownType.ToString()); ExitNode(); EnterNode("Graphics"); writer.WriteAttributeString("HeadGraphicPath", colonist.HeadGraphicPath); ExitNode(); EnterNode("Graphics"); writer.WriteAttributeString("HairColor", colonist.HairColor.r.ToString() + "," + colonist.HairColor.g.ToString() + "," + colonist.HairColor.b.ToString() + "," + colonist.HairColor.a.ToString()); ExitNode(); EnterNode("HairDef"); writer.WriteAttributeString("DefName", colonist.HairDef.DefName); writer.WriteAttributeString("GraphicPath", colonist.HairDef.GraphicPath); writer.WriteAttributeString("HairGender", colonist.HairDef.HairGender.ToString()); writer.WriteAttributeString("Label", colonist.HairDef.Label); ExitNode(); int b = 1; foreach (Clothing clothing in colonist.Clothing) { if (b == 1) { EnterNode("OnSkin"); } else { EnterNode("Shell"); } writer.WriteAttributeString("Layer", clothing.Layer); writer.WriteAttributeString("Label", clothing.Label); writer.WriteAttributeString("GraphicPath", clothing.GraphicPath); writer.WriteAttributeString("Color", clothing.Color.r.ToString() + "," + clothing.Color.g.ToString() + "," + clothing.Color.b.ToString() + "," + clothing.Color.a.ToString()); ExitNode(); b++; } EnterNode("Backstories"); EnterNode("Childhood"); writer.WriteAttributeString("Index", colonist.Backstory[0].StoryIndex.ToString()); ExitNode(); EnterNode("Adulthood"); writer.WriteAttributeString("Index", colonist.Backstory[1].StoryIndex.ToString()); ExitNode(); ExitNode(); EnterNode("Traits"); writer.WriteAttributeString("Trait1", colonist.Traits[0].TraitName); writer.WriteAttributeString("Trait2", colonist.Traits[1].TraitName); ExitNode(); EnterNode("SkillPool"); writer.WriteAttributeString("Amount", colonist.SkillPool.ToString()); ExitNode(); EnterNode("Skills"); for (int c = 0; c < colonist.Skills.Count; c++) { EnterNode("Skill" + c.ToString()); writer.WriteAttributeString("Value", colonist.Skills[c].SkillValue.ToString()); writer.WriteAttributeString("Passion", colonist.Skills[c].SkillPassion.ToString()); ExitNode(); } ExitNode(); EnterNode("Weapon"); writer.WriteAttributeString("Name", colonist.Weapon); ExitNode(); EnterNode("End"); ExitNode(); ExitNode(); }
private static void WeaponUp(Rect position, Colonist colonist) { WeaponIndex = WeaponIndex + 1; if (WeaponIndex > ColonistManager.WeaponList.Count - 1) { WeaponIndex = 0; } colonist.Weapon = ColonistManager.WeaponList[WeaponIndex]; GUI.Label(position, colonist.Weapon); }
private static void SkillUp(Rect rect, int index, Colonist colonist, int SkillUpdate) { if (Genstep_ColonistCreationMod.BaseStats[0] == false) { if (colonist.SkillPool > 0 && colonist.Skills[index].SkillValue + SkillUpdate < 15) { Rect pos = new Rect(120f, 0f, rect.height, rect.height); colonist.Skills[index].SkillValue = colonist.Skills[index].SkillValue + 1; colonist.SkillPool = colonist.SkillPool - 1; GUI.Label(new Rect(0f, 35f, 200f, 30f), "Skill Points: ".Translate() + colonist.SkillPool.ToString()); string text = GenString.NumberString(colonist.Skills[index].SkillValue); GUI.Label(pos, text); } } else { if (colonist.SkillPool > 0) { Rect pos = new Rect(120f, 0f, rect.height, rect.height); colonist.Skills[index].SkillValue = colonist.Skills[index].SkillValue + 1; colonist.SkillPool = colonist.SkillPool - 1; GUI.Label(new Rect(0f, 35f, 200f, 30f), "Skill Points: ".Translate() + colonist.SkillPool.ToString()); string text = GenString.NumberString(colonist.Skills[index].SkillValue); GUI.Label(pos, text); } } }
public static void RandomColonists() { Population.Clear(); ShirtList.Clear(); CoatList.Clear(); ClothingList.Clear(); allBackstories.Clear(); NameBank nameBank = NameShuffleDatabase.BankOf((NameCategory)1); GenClothingList(); GenHairList(); //Load in Backstories from BackstoryDatabase for (int a = 0; a < BackstoryDatabase.allBackstories.Count - 1; a++) { allBackstories.Add(BackstoryDatabase.allBackstories.ElementAt(a).Value); } List <Backstory> SortedBackstories = allBackstories.OrderBy(o => o.title).ToList(); allBackstories = SortedBackstories; //Generate new random colonists for (int i = 0; i < ColonistNum.Amount; i++) { Colonist colonist = new Colonist(); //Gen random colonist basic info int gender = UnityEngine.Random.Range(1, 100); if (gender > 50) { gender = 1; int body = UnityEngine.Random.Range(1, 4); if (body == 1) { colonist.BodyType = BodyType.Male; } else if (body == 2) { colonist.BodyType = BodyType.Thin; } else if (body == 3) { colonist.BodyType = BodyType.Hulk; } else if (body == 4) { colonist.BodyType = BodyType.Fat; } } else { gender = 2; int body = UnityEngine.Random.Range(1, 4); if (body == 1) { colonist.BodyType = BodyType.Female; } else if (body == 2) { colonist.BodyType = BodyType.Thin; } else if (body == 3) { colonist.BodyType = BodyType.Hulk; } else if (body == 4) { colonist.BodyType = BodyType.Fat; } } colonist.Gender = gender; colonist.FirstName = nameBank.GetName((Gender)colonist.Gender, (NameSlot)0); colonist.NickName = nameBank.GetName((Gender)colonist.Gender, (NameSlot)2); colonist.LastName = nameBank.GetName((Gender)0, (NameSlot)1); colonist.Age = UnityEngine.Random.Range(16, 70); //Gen colonist starting skills List <Colonist_Skill> skills = new List <Colonist_Skill>(); if (ColonistDifficulty.Difficulty == "Easy") { colonist.SkillPool = 40; } else if (ColonistDifficulty.Difficulty == "Normal") { colonist.SkillPool = 20; } else { colonist.SkillPool = 0; } for (int a = 0; a < 11; a++) { Colonist_Skill skill = new Colonist_Skill(); if (a == 0) { skill.SkillName = "Construction".Translate(); skill.SkillPassion = 1; } else if (a == 1) { skill.SkillName = "Growing".Translate(); skill.SkillPassion = 2; } else if (a == 2) { skill.SkillName = "Research".Translate(); skill.SkillPassion = 3; } else if (a == 3) { skill.SkillName = "Mining".Translate(); } else if (a == 4) { skill.SkillName = "Shooting".Translate(); } else if (a == 5) { skill.SkillName = "Melee".Translate(); } else if (a == 6) { skill.SkillName = "Social".Translate(); } else if (a == 7) { skill.SkillName = "Cooking".Translate(); } else if (a == 8) { skill.SkillName = "Medicine".Translate(); } else if (a == 9) { skill.SkillName = "Artistic".Translate(); } else if (a == 10) { skill.SkillName = "Crafting".Translate(); } skill.SkillValue = 0; skills.Add(skill); } colonist.Skills = skills; //Load Backstories childstories.Clear(); adultstories.Clear(); ChildStoryIndex = 0; AdultStoryIndex = 0; List <Colonist_Backstory> ColonistStory = new List <Colonist_Backstory>(); for (int a = 0; a < allBackstories.Count - 1; a++) { bool ChildStoryFound = false; bool AdultStoryFound = false; Colonist_Backstory story = new Colonist_Backstory(); if (allBackstories[a].slot == BackstorySlot.Childhood) { story.StoryName = allBackstories[a].title; story.StoryAge = 0; story.BaseDescription = allBackstories[a].baseDesc; story.BodyTypeFemale = allBackstories[a].bodyTypeFemale; story.BodyTypeMale = allBackstories[a].bodyTypeMale; story.BodyTypeGlobal = allBackstories[a].bodyTypeGlobal; story.StoryIndex = ChildStoryIndex; List <StorySkillGain> skillGains = new List <StorySkillGain>(); for (int b = 0; b < allBackstories[a].skillGainsResolved.Count - 1; b++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = allBackstories[a].skillGainsResolved.ElementAt(b).Key.skillLabel; skillGain.SkillValue = allBackstories[a].skillGainsResolved.ElementAt(b).Value; skillGains.Add(skillGain); } story.SkillGains = skillGains; List <string> workRestrictions = new List <string>(); foreach (WorkTypeDef work in allBackstories[a].DisabledWorkTypes) { workRestrictions.Add(work.defName); } story.WorkRestrictions = workRestrictions; for (int b = 0; b < childstories.Count - 1; b++) { if (childstories[b].StoryName == story.StoryName) { ChildStoryFound = true; } } if (ChildStoryFound == false) { childstories.Add(story); ChildStoryIndex = ChildStoryIndex + 1; } } if (colonist.Gender == 1) { if (allBackstories[a].slot == BackstorySlot.Adulthood) { if (allBackstories[a].bodyTypeMale == colonist.BodyType || allBackstories[a].bodyTypeGlobal == colonist.BodyType) { story.StoryName = allBackstories[a].title; story.StoryAge = 1; story.BaseDescription = allBackstories[a].baseDesc; story.BodyTypeFemale = allBackstories[a].bodyTypeFemale; story.BodyTypeMale = allBackstories[a].bodyTypeMale; story.BodyTypeGlobal = allBackstories[a].bodyTypeGlobal; story.StoryIndex = AdultStoryIndex; List <StorySkillGain> skillGains = new List <StorySkillGain>(); for (int b = 0; b < allBackstories[a].skillGainsResolved.Count - 1; b++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = allBackstories[a].skillGainsResolved.ElementAt(b).Key.skillLabel; skillGain.SkillValue = allBackstories[a].skillGainsResolved.ElementAt(b).Value; skillGains.Add(skillGain); } story.SkillGains = skillGains; List <string> workRestrictions = new List <string>(); foreach (WorkTypeDef work in allBackstories[a].DisabledWorkTypes) { workRestrictions.Add(work.defName); } story.WorkRestrictions = workRestrictions; for (int b = 0; b < ColonistManager.AdultStories.Count - 1; b++) { if (ColonistManager.AdultStories[b].StoryName == story.StoryName) { AdultStoryFound = true; } } if (AdultStoryFound == false) { ColonistManager.AdultStories.Add(story); AdultStoryIndex = AdultStoryIndex + 1; } } } } else if (colonist.Gender == 2) { if (allBackstories[a].slot == BackstorySlot.Adulthood) { if (allBackstories[a].bodyTypeFemale == colonist.BodyType || allBackstories[a].bodyTypeGlobal == colonist.BodyType) { story.StoryName = allBackstories[a].title; story.StoryAge = 1; story.BaseDescription = allBackstories[a].baseDesc; story.BodyTypeFemale = allBackstories[a].bodyTypeFemale; story.BodyTypeMale = allBackstories[a].bodyTypeMale; story.BodyTypeGlobal = allBackstories[a].bodyTypeGlobal; story.StoryIndex = AdultStoryIndex; List <StorySkillGain> skillGains = new List <StorySkillGain>(); for (int b = 0; b < allBackstories[a].skillGainsResolved.Count - 1; b++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = allBackstories[a].skillGainsResolved.ElementAt(b).Key.skillLabel; skillGain.SkillValue = allBackstories[a].skillGainsResolved.ElementAt(b).Value; skillGains.Add(skillGain); } story.SkillGains = skillGains; List <string> workRestrictions = new List <string>(); foreach (WorkTypeDef work in allBackstories[a].DisabledWorkTypes) { workRestrictions.Add(work.defName); } story.WorkRestrictions = workRestrictions; for (int b = 0; b < ColonistManager.AdultStories.Count - 1; b++) { if (ColonistManager.AdultStories[b].StoryName == story.StoryName) { AdultStoryFound = true; } } if (AdultStoryFound == false) { ColonistManager.AdultStories.Add(story); AdultStoryIndex = AdultStoryIndex + 1; } } } } } //Gen random childhood backstory ColonistStory.Add(childstories[UnityEngine.Random.Range(0, childstories.Count - 1)]); //Gen random adulthood backstory ColonistStory.Add(adultstories[UnityEngine.Random.Range(0, adultstories.Count - 1)]); colonist.Backstory = ColonistStory; //Gen random traits int rand_trait = 0; List <StoryTrait> StoryTraits = new List <StoryTrait>(); foreach (TraitDef trait in DefDatabase <TraitDef> .AllDefsListForReading) { StoryTrait storyTrait = new StoryTrait(); storyTrait.TraitName = trait.label; storyTrait.Effect = trait.effect; StoryTraits.Add(storyTrait); } StoryTrait storytrait = new StoryTrait(); storytrait = new StoryTrait(); rand_trait = UnityEngine.Random.Range(0, StoryTraits.Count - 1); storytrait.TraitName = StoryTraits[rand_trait].TraitName; storytrait.Effect = StoryTraits[rand_trait].Effect; storytrait.TraitDescription = StoryTraits[rand_trait].TraitDescription; StoryTraits.Add(storytrait); StoryTrait storytrait2 = new StoryTrait(); int rand_trait2 = 0; rand_trait2 = UnityEngine.Random.Range(0, StoryTraits.Count - 1); storytrait2.TraitName = StoryTraits[rand_trait2].TraitName; storytrait2.Effect = StoryTraits[rand_trait].Effect; storytrait2.TraitDescription = StoryTraits[rand_trait2].TraitDescription; StoryTraits.Add(storytrait2); colonist.Traits = StoryTraits; //Gen Apparel List <Clothing> Outfit = new List <Clothing>(); Clothing clothing = new Clothing(); clothing = ShirtList.RandomListElement <Clothing>(); Outfit.Add(clothing); clothing = new Clothing(); clothing = CoatList.RandomListElement <Clothing>(); Outfit.Add(clothing); colonist.Clothing = Outfit; //Gen Body colonist.SkinColor = RandomSkinColor(); colonist.CrownType = ((UnityEngine.Random.value >= 0.5f) ? CrownType.Narrow : CrownType.Average); colonist.HeadGraphicPath = GraphicDatabase_Head.GetHeadRandom((Gender)colonist.Gender, colonist.SkinColor, colonist.CrownType).graphicPath; //Gen Hair colonist.HairColor = RandomHairColor(colonist.SkinColor); ColHairDef hairDef = new ColHairDef(); if (colonist.Gender == 1) { hairDef = MaleHairList.RandomListElement <ColHairDef>(); } else if (colonist.Gender == 2) { hairDef = FemaleHairList.RandomListElement <ColHairDef>(); } colonist.HairDef = hairDef; //Set BodyType if (colonist.Backstory[1].BodyTypeGlobal.ToString() != "Undefined") { colonist.BodyType = colonist.Backstory[1].BodyTypeGlobal; } else { if (colonist.Gender == 1 && colonist.Backstory[1].BodyTypeMale.ToString() != "Undefined") { colonist.BodyType = colonist.Backstory[1].BodyTypeMale; } else if (colonist.Gender == 1 && colonist.Backstory[1].BodyTypeMale.ToString() == "Undefined") { colonist.BodyType = BodyType.Male; } if (colonist.Gender == 2 && colonist.Backstory[1].BodyTypeFemale.ToString() != "Undefined") { colonist.BodyType = colonist.Backstory[1].BodyTypeFemale; } else if (colonist.Gender == 2 && colonist.Backstory[1].BodyTypeFemale.ToString() == "Undefined") { colonist.BodyType = BodyType.Male; } } //Gen Weapon GenWeaponList(); colonist.Weapon = WeaponList.RandomListElement <string>(); //Add colonist to total population Population.Add(colonist); } }
public string FullDescriptionFor(List<StorySkillGain> SkillGains, List<string> WorkRestrictions, string desc, Colonist c) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(ModdedGenText.TextAdjustedFor(c, desc)); stringBuilder.AppendLine(); stringBuilder.AppendLine(); foreach (StorySkillGain gain in SkillGains) { stringBuilder.AppendLine(gain.SkillName + ": " + gain.SkillValue.ToString("+##;-##")); } stringBuilder.AppendLine(); foreach (string current in WorkRestrictions) { stringBuilder.AppendLine(current + " " + "disabled"); } return stringBuilder.ToString(); }
private static void Trait2Up(Rect position, Colonist colonist) { Trait2Index = Trait2Index + 1; if (Trait2Index > allTraits.Count - 1) { Trait2Index = 0; } if (colonist.Traits[0].TraitName == allTraits[Trait2Index].TraitName) { Trait2Index = Trait2Index + 1; } colonist.Traits[1].TraitName = allTraits[Trait2Index].TraitName; GUI.Label(position, colonist.Traits[1].TraitName); }
private static void Display_GenderRaceAge(Colonist colonist) { Rect position = new Rect(327f, 5f, 50f, 24f); Rect position2 = new Rect((position.x + position.width) + 2, 5f, 24f, 24f); Rect position3 = new Rect((position2.x + position2.width) + 5, 5f, 50f, 24f); Rect position4 = new Rect((position3.x + position3.width) + 2, 5f, 24f, 24f); Rect position5 = new Rect((position4.x + position4.width) + 20, 5f, 30f, 24f); Rect position6 = new Rect((position5.x + position5.width) + 2, 5f, 24f, 24f); Rect position7 = new Rect((position6.x + position6.width) + 5, 5f, 20f, 24f); Rect position8 = new Rect(position7.x + position7.width, 5f, 24f, 24f); string gender = ""; if (colonist.Gender == 1) { gender = "Male"; } else { gender = "Female"; } GUI.Label(position, Language.FindText(LoadLanguage.language, "Gender") + ":"); if (Widgets.TextButton(position2, "<")) { GenderChange(position3, colonist); } GUI.Label(position3, gender.Translate()); if (Widgets.TextButton(position4, ">")) { GenderChange(position3, colonist); } GUI.Label(position5, Language.FindText(LoadLanguage.language, "Age") + ":"); if (Widgets.TextButton(position6, "-")) { AgeDown(position7, colonist); } GUI.Label(position7, colonist.Age.ToString().Translate()); if (Widgets.TextButton(position8, "+")) { AgeUp(position7, colonist); } }
public static void PawnsToColonists() { for (int p = 0; p < ColonistNum.Amount; p++) { if (ModdedMapInitParams.colonists[p] != null) { Colonist colonist = new Colonist(); colonist.Age = ModdedMapInitParams.colonists[p].age; colonist.Gender = (int)ModdedMapInitParams.colonists[p].gender; colonist.FirstName = ModdedMapInitParams.colonists[p].Name.first; colonist.NickName = ModdedMapInitParams.colonists[p].Name.nick; colonist.LastName = ModdedMapInitParams.colonists[p].Name.last; colonist.SkinColor = ModdedMapInitParams.colonists[p].story.skinColor; colonist.CrownType = ModdedMapInitParams.colonists[p].story.crownType; colonist.HeadGraphicPath = ModdedMapInitParams.colonists[p].story.headGraphicPath; colonist.HairColor = ModdedMapInitParams.colonists[p].story.hairColor; ColHairDef hair = new ColHairDef(); hair.DefName = ModdedMapInitParams.colonists[p].story.hairDef.defName; hair.GraphicPath = ModdedMapInitParams.colonists[p].story.hairDef.graphicPath; colonist.HairDef = hair; List<StoryTrait> traits = new List<StoryTrait>(); StoryTrait trait = new StoryTrait(); trait.TraitName = ModdedMapInitParams.colonists[p].story.traits.allTraits[0].def.label; traits.Add(trait); trait = new StoryTrait(); trait.TraitName = ModdedMapInitParams.colonists[p].story.traits.allTraits[1].def.label; traits.Add(trait); colonist.Traits = traits; List<Clothing> Outfit = new List<Clothing>(); ShirtList.Clear(); CoatList.Clear(); GenClothingList(); Clothing clothing = new Clothing(); clothing = ShirtList.RandomListElement<Clothing>(); Outfit.Add(clothing); clothing = new Clothing(); clothing = CoatList.RandomListElement<Clothing>(); Outfit.Add(clothing); colonist.Clothing = Outfit; List<Colonist_Skill> skills = new List<Colonist_Skill>(); for (int a = 0; a < ModdedMapInitParams.colonists[p].skills.skills.Count; a++) { Colonist_Skill skill = new Colonist_Skill(); skill.SkillName = ModdedMapInitParams.colonists[p].skills.skills[a].def.skillLabel; skill.SkillValue = ModdedMapInitParams.colonists[p].skills.skills[a].level; skill.SkillPassion = (int)ModdedMapInitParams.colonists[p].skills.skills[a].passion; skills.Add(skill); } colonist.Skills = skills; List<Colonist_Backstory> Backstories = new List<Colonist_Backstory>(); Colonist_Backstory backstory = new Colonist_Backstory(); backstory.StoryName = ModdedMapInitParams.colonists[p].story.childhood.title; backstory.BaseDescription = ModdedMapInitParams.colonists[p].story.childhood.baseDesc; backstory.StoryAge = 0; List<StorySkillGain> skillGains = new List<StorySkillGain>(); for (int i = 0; i < ModdedMapInitParams.colonists[p].story.childhood.skillGainsResolved.Count - 1; i++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = ModdedMapInitParams.colonists[p].story.childhood.skillGainsResolved.ElementAt(i).Key.skillLabel; skillGain.SkillValue = ModdedMapInitParams.colonists[p].story.childhood.skillGainsResolved.ElementAt(i).Value; skillGains.Add(skillGain); } backstory.SkillGains = skillGains; List<string> Restrictions = new List<string>(); foreach (WorkTypeDef work in ModdedMapInitParams.colonists[p].story.childhood.DisabledWorkTypes) { Restrictions.Add(work.defName); } backstory.WorkRestrictions = Restrictions; backstory.BodyTypeGlobal = ModdedMapInitParams.colonists[p].story.childhood.bodyTypeGlobal; backstory.BodyTypeMale = ModdedMapInitParams.colonists[p].story.childhood.bodyTypeMale; backstory.BodyTypeFemale = ModdedMapInitParams.colonists[p].story.childhood.bodyTypeFemale; Backstories.Add(backstory); backstory = new Colonist_Backstory(); backstory.StoryName = ModdedMapInitParams.colonists[p].story.adulthood.title; backstory.BaseDescription = ModdedMapInitParams.colonists[p].story.adulthood.baseDesc; backstory.StoryAge = 1; skillGains = new List<StorySkillGain>(); for (int i = 0; i < ModdedMapInitParams.colonists[p].story.adulthood.skillGainsResolved.Count - 1; i++) { StorySkillGain skillGain = new StorySkillGain(); skillGain.SkillName = ModdedMapInitParams.colonists[p].story.adulthood.skillGainsResolved.ElementAt(i).Key.skillLabel; skillGain.SkillValue = ModdedMapInitParams.colonists[p].story.adulthood.skillGainsResolved.ElementAt(i).Value; skillGains.Add(skillGain); } backstory.SkillGains = skillGains; Restrictions = new List<string>(); foreach (WorkTypeDef work in ModdedMapInitParams.colonists[p].story.adulthood.DisabledWorkTypes) { Restrictions.Add(work.defName); } backstory.WorkRestrictions = Restrictions; backstory.BodyTypeGlobal = ModdedMapInitParams.colonists[p].story.adulthood.bodyTypeGlobal; backstory.BodyTypeMale = ModdedMapInitParams.colonists[p].story.adulthood.bodyTypeMale; backstory.BodyTypeFemale = ModdedMapInitParams.colonists[p].story.adulthood.bodyTypeFemale; if (backstory.BodyTypeGlobal.ToString() != "Undefined") { colonist.BodyType = backstory.BodyTypeGlobal; } else { if (colonist.Gender == 1 && backstory.BodyTypeMale.ToString() != "Undefined") { colonist.BodyType = backstory.BodyTypeMale; } else if (colonist.Gender == 1 && backstory.BodyTypeMale.ToString() == "Undefined") { colonist.BodyType = BodyType.Male; } if (colonist.Gender == 2 && backstory.BodyTypeFemale.ToString() != "Undefined") { colonist.BodyType = backstory.BodyTypeFemale; } else if (colonist.Gender == 2 && backstory.BodyTypeFemale.ToString() == "Undefined") { colonist.BodyType = BodyType.Male; } } Backstories.Add(backstory); colonist.Backstory = Backstories; GenWeaponList(); colonist.Weapon = WeaponList.RandomListElement<string>(); colonist.SkillPool = 0; Population.Add(colonist); } } }
private static void ChildStoryPrevious(Rect position, Colonist colonist, Rect rect7, int slot) { ChildStoryIndex = ChildStoryIndex - 1; if (ChildStoryIndex < 0) { ChildStoryIndex = ColonistManager.ChildStories.Count - 1; } colonist.Backstory[0] = ColonistManager.ChildStories[ChildStoryIndex]; if (Genstep_ColonistCreationMod.BaseStats[0] == false) { ResetSkills(colonist); } GUI.Label(position, colonist.Backstory[0].StoryName.Translate()); }
private static HairDef RandomHairDefFor(Colonist c, FactionDef factionType) { IEnumerable<HairDef> source = from hair in DefDatabase<HairDef>.AllDefs where hair.hairTags.SharesElementWith(factionType.hairTags) select hair; return source.RandomElementByWeight((HairDef hair) => HairChoiceLikelihoodFor(hair, c)); }
private void DrawTabs(Rect inRect, Colonist colonist) { GenFont.SetFontMedium(); GUI.Label(new Rect(0f, 0f, 300f, 300f), Language.FindText(LoadLanguage.language, "Enhanced Colonist Creation")); GenFont.SetFontSmall(); Rect rect = new Rect(0f, 80f, inRect.width, inRect.height - 60f - 80f); Widgets.DrawMenuSection(rect); TabDrawer.DrawTabs(rect, from c in ColonistManager.Population select new TabRecord(c.FirstName + " " + c.LastName, delegate { SelectColonistConfig(c); }, c == colonist)); Rect innerRect = GenUI.GetInnerRect(rect, 17f); GUI.BeginGroup(innerRect); FillCard(colonist); GUI.EndGroup(); }
private static void Trait1Down(Rect position, Colonist colonist) { Trait1Index = Trait1Index - 1; if (Trait1Index < 0) { Trait1Index = allTraits.Count - 1; } if (allTraits[Trait1Index].TraitName == colonist.Traits[1].TraitName) { Trait1Index = Trait1Index - 1; } colonist.Traits[0].TraitName = allTraits[Trait1Index].TraitName; GUI.Label(position, colonist.Traits[0].TraitName); }
public static string TextAdjustedFor(Colonist c, string baseText) { return(baseText.Replace("NAME", c.NickName).Replace("HISCAP", c.PossessiveCap()).Replace("HIMCAP", c.ProObjCap()).Replace("HECAP", c.ProSubjCap()).Replace("HIS", c.Possessive()).Replace("HIM", c.ProObj()).Replace("HE", c.ProSubj())); }
private static void SkillDown(Rect rect, int index, Colonist colonist, int SkillUpdate) { if (colonist.Skills[index].SkillValue > 0) { Rect pos = new Rect(120f, 0f, rect.height, rect.height); colonist.Skills[index].SkillValue = colonist.Skills[index].SkillValue - 1; colonist.SkillPool = colonist.SkillPool + 1; GUI.Label(new Rect(0f, 35f, 200f, 30f), "Skill Points: ".Translate() + colonist.SkillPool.ToString()); string text = GenString.NumberString(colonist.Skills[index].SkillValue); GUI.Label(pos, text); } }
private static void DrawBackstory(Rect innerRect, Colonist colonist) { GUI.BeginGroup(innerRect); float num = 0f; GenFont.SetFontMedium(); GUI.Label(new Rect(0f, 0f, 200f, 30f), Language.FindText(LoadLanguage.language, "Backstory")); num += 30f; //Childhood Story GenFont.SetFontSmall(); Rect rect7 = new Rect(0f, num, innerRect.width, 24f); if (rect7.Contains(Event.current.mousePosition)) { Widgets.DrawHighlight(rect7); } TooltipHandler.TipRegion(rect7, colonist.Backstory[0].FullDescriptionFor(colonist.Backstory[0].SkillGains, colonist.Backstory[0].WorkRestrictions, colonist.Backstory[0].BaseDescription, colonist)); GUI.skin.label.alignment = TextAnchor.MiddleLeft; GUI.Label(rect7, Language.FindText(LoadLanguage.language, "Childhood") + ":"); GUI.skin.label.alignment = TextAnchor.UpperLeft; Rect position2 = new Rect(rect7); position2.x += 108f; position2.width -= 90f; string title = colonist.Backstory[0].StoryName; GUI.Label(position2, title.Translate()); Rect rect9 = new Rect(position2.x - 30f, num, 24f, 24f); Rect position4 = new Rect(rect9); if (Widgets.TextButton(position4, "<")) { ChildStoryPrevious(position2, colonist, rect7, 0); } position4.x = innerRect.width - 24f; if (Widgets.TextButton(position4, ">")) { ChildStoryNext(position2, colonist, rect7, 0); } num += rect7.height + 2f; //Adulthood Story GenFont.SetFontSmall(); Rect rect8 = new Rect(0f, num, innerRect.width, 24f); if (rect8.Contains(Event.current.mousePosition)) { Widgets.DrawHighlight(rect8); } TooltipHandler.TipRegion(rect8, colonist.Backstory[1].FullDescriptionFor(colonist.Backstory[1].SkillGains, colonist.Backstory[1].WorkRestrictions, colonist.Backstory[1].BaseDescription, colonist)); GUI.skin.label.alignment = TextAnchor.MiddleLeft; GUI.Label(rect8, Language.FindText(LoadLanguage.language, "Adulthood") + ":"); GUI.skin.label.alignment = TextAnchor.UpperLeft; Rect position3 = new Rect(rect8); position3.x += 108f; position3.width -= 90f; string title2 = colonist.Backstory[1].StoryName; GUI.Label(position3, title2.Translate()); Rect rect10 = new Rect(position3.x - 30f, num, 24f, 24f); Rect position5 = new Rect(rect10); if (Widgets.TextButton(position5, "<")) { AdultStoryPrevious(position3, colonist, rect8, 1); } position5.x = innerRect.width - 24f; if (Widgets.TextButton(position5, ">")) { AdultStoryNext(position3, colonist, rect8, 1); } num += rect8.height + 2f; num += 5f; GenFont.SetFontMedium(); GUI.Label(new Rect(0f, num, 200f, 30f), Language.FindText(LoadLanguage.language, "Incapable Of")); num += 30f; float num2 = num; num2 += 280f; GenFont.SetFontSmall(); List<string> list = new List<string>(); if (colonist.Backstory[0].WorkRestrictions.Count > 0) { for (int a = 0; a < colonist.Backstory[0].WorkRestrictions.Count; a++) { list.Add(colonist.Backstory[0].WorkRestrictions[a]); } } if (colonist.Backstory[1].WorkRestrictions.Count > 0) { for (int b = 0; b < colonist.Backstory[1].WorkRestrictions.Count; b++) { if (!list.Contains(colonist.Backstory[1].WorkRestrictions[b])) { list.Add(colonist.Backstory[1].WorkRestrictions[b]); } } } if (list.Count == 0) { string text = Language.FindText(LoadLanguage.language, "(none)"); Rect position6 = new Rect(0f, num, innerRect.width, 20f); GUI.Label(position6, text.Translate()); } else { for (int c = 0; c < list.Count; c++) { string text = list[c]; Rect position6 = new Rect(0f, num, innerRect.width, 20f); GUI.Label(position6, Language.FindText(LoadLanguage.language, text)); num += 20f; } } //Traits GenFont.SetFontMedium(); GUI.Label(new Rect(0f, num2, 200f, 30f), Language.FindText(LoadLanguage.language, "Traits")); num2 += 30f; GenFont.SetFontSmall(); //Trait1 Rect rect11 = new Rect(0f, num2, 24f, 24f); Rect rect12 = new Rect(30f, num2, innerRect.width, 24f); if (rect12.Contains(Event.current.mousePosition)) { Widgets.DrawHighlight(rect11); } TooltipHandler.TipRegion(rect11, "TraitsDoNothing".Translate()); if (Widgets.TextButton(rect11, "<")) { Trait1Down(rect12, colonist); } rect12.width = innerRect.width - 96f; rect11.x = innerRect.width - 96f; if (Widgets.TextButton(rect11, ">")) { Trait1Up(rect12, colonist); } GUI.Label(rect12, colonist.Traits[0].TraitName.Translate()); num2 += rect11.height + 2f; //Trait2 Rect rect13 = new Rect(0f, num2, 24f, 24f); Rect rect14 = new Rect(30f, num2, innerRect.width, 24f); if (rect12.Contains(Event.current.mousePosition)) { Widgets.DrawHighlight(rect13); } TooltipHandler.TipRegion(rect14, "TraitsDoNothing".Translate()); if (Widgets.TextButton(rect13, "<")) { Trait2Down(rect14, colonist); } rect14.width = innerRect.width - 96f; rect13.x = innerRect.width - 96f; if (Widgets.TextButton(rect13, ">")) { Trait2Up(rect14, colonist); } GUI.Label(rect14, colonist.Traits[1].TraitName.Translate()); GUI.EndGroup(); }