static bool Prefix(Pawn namer, Pawn namee) { FemaleNames nameGenF = new FemaleNames(); MaleNames nameGenM = new MaleNames(); string value = (namee.Name == null) ? namee.LabelIndefinite() : namee.Name.ToStringFull; NameTriple tempName = namee.gender == Gender.Male ? nameGenM.GetChineseMaleName(namee) : nameGenF.GetChineseFemaleName(namee); namee.Name = new NameSingle(tempName.Nick); if (namer.Faction == Faction.OfPlayer) { Messages.Message("MessageNuzzledPawnGaveNameTo".Translate(namer.Named("NAMER"), value, namee.Name.ToStringFull, namee.Named("NAMEE")), namee, MessageTypeDefOf.NeutralEvent); } return(false); }
public static NameTriple GetRobotName(X2_AIRobot robot) { if (robot == null || robot.Name == null) { return(null); } NameTriple nameTriple = robot.Name as NameTriple; if (nameTriple != null) { return(new NameTriple(nameTriple.First, nameTriple.Nick, nameTriple.Last)); } return(null); }
protected override void DoNext() { CheckWarnRequiredWorkTypesDisabledForEveryone(delegate { foreach (Pawn startingAndOptionalPawn in Find.GameInitData.startingAndOptionalPawns) { NameTriple nameTriple = startingAndOptionalPawn.Name as NameTriple; if (nameTriple != null && string.IsNullOrEmpty(nameTriple.Nick)) { startingAndOptionalPawn.Name = new NameTriple(nameTriple.First, nameTriple.First, nameTriple.Last); } } base.DoNext(); }); }
private bool FilterMatch(NameTriple n) { if (n.First == "Tynan" && n.Last == "Sylvester") { return(false); } if (this.searchWords.Length == 0) { return(false); } if (this.searchWords.Length == 1) { return(n.Last.StartsWith(this.searchName, StringComparison.OrdinalIgnoreCase) || n.First.StartsWith(this.searchName, StringComparison.OrdinalIgnoreCase) || n.Nick.StartsWith(this.searchName, StringComparison.OrdinalIgnoreCase)); } return(this.searchWords.Length == 2 && n.First.EqualsIgnoreCase(this.searchWords[0]) && (n.Last.StartsWith(this.searchWords[1], StringComparison.OrdinalIgnoreCase) || n.Nick.StartsWith(this.searchWords[1], StringComparison.OrdinalIgnoreCase))); }
public override bool ConfusinglySimilarTo(Name other) { NameSingle nameSingle = other as NameSingle; if (nameSingle != null && nameSingle.nameInt == nameInt) { return(true); } NameTriple nameTriple = other as NameTriple; if (nameTriple != null && nameTriple.Nick == nameInt) { return(true); } return(false); }
// Token: 0x06000039 RID: 57 RVA: 0x00003808 File Offset: 0x00001A08 public static NameTriple MakeDroidName(string nickName) { string text = string.Format("D-{0:X}-{1:X}", Rand.Range(0, 256), Rand.Range(0, 256)); bool flag = nickName == null; NameTriple result; if (flag) { result = new NameTriple(text, text, ""); } else { result = new NameTriple(text, nickName, ""); } return(result); }
public static void ResolveNameForSpouseOnGeneration(ref PawnGenerationRequest request, Pawn generated) { if (request.FixedLastName != null) { return; } MarriageNameChange marriageNameChange = Roll_NameChangeOnMarriage(); if (marriageNameChange == MarriageNameChange.NoChange) { return; } Pawn spouse = generated.GetSpouse(); DetermineManAndWomanSpouses(generated, spouse, out var man, out var woman); NameTriple nameTriple = man.Name as NameTriple; NameTriple nameTriple2 = woman.Name as NameTriple; if (generated == woman && marriageNameChange == MarriageNameChange.WomansName) { man.Name = new NameTriple(nameTriple.First, nameTriple.Nick, nameTriple.Last); if (man.story != null) { man.story.birthLastName = GetRandomBirthName(man); } request.SetFixedLastName(nameTriple.Last); } else if (generated == man && marriageNameChange == MarriageNameChange.WomansName) { request.SetFixedLastName(nameTriple2.Last); request.SetFixedBirthName(GetRandomBirthName(man)); } else if (generated == woman && marriageNameChange == MarriageNameChange.MansName) { request.SetFixedLastName(nameTriple.Last); request.SetFixedBirthName(GetRandomBirthName(woman)); } else if (generated == man && marriageNameChange == MarriageNameChange.MansName) { woman.Name = new NameTriple(nameTriple2.First, nameTriple2.Nick, nameTriple2.Last); if (woman.story != null) { woman.story.birthLastName = GetRandomBirthName(man); } request.SetFixedLastName(nameTriple2.Last); } }
private Pawn getTanya() { PawnGenerationRequest request = new PawnGenerationRequest(DefDatabase <PawnKindDef> .GetNamed("ra2_AlliedTanya", true), Faction.OfPlayer, PawnGenerationContext.NonPlayer, -1, false, false, false, false, true, true, 1f, false, true, true, false, false, false, false, null, null, null, null, null, Gender.Female, null, null); Pawn item = PawnGenerator.GeneratePawn(request); Pawn_StoryTracker ps = item.story; HairDef hair = DefDatabase <HairDef> .GetNamed("Curly"); ps.childhood = null; ps.adulthood = null; ps.traits.allTraits = new List <Trait>(); ps.traits.GainTrait(new Trait(DefDatabase <TraitDef> .GetNamed("ra2_MakeSoldier", true))); ps.traits.GainTrait(new Trait(TraitDefOf.Psychopath)); Pawn_WorkSettings pws = item.workSettings; pws.DisableAll(); NameTriple triple = NameTriple.FromString(item.kindDef.label); triple.ResolveMissingPieces("Adams".Translate()); item.Name = triple; Pawn_SkillTracker skt = item.skills; foreach (SkillRecord sr in skt.skills) { sr.Level = 20; } item.inventory.DestroyAll(); ps.bodyType = BodyTypeDefOf.Female; ps.hairDef = hair; ps.hairColor = new UnityEngine.Color(1, 0.8f, 0); //st.SkinColor = new UnityEngine.Color(0.98f,0.76f,0.71f); ps.melanin = 0f; Pawn_EquipmentTracker pe = item.equipment; pe.Remove(pe.Primary); pe.AddEquipment((ThingWithComps)ThingMaker.MakeThing(DefDatabase <ThingDef> .GetNamed("ra2_Gun_Tanya", true))); //item.story = st; return(item); }
public static NameTriple TryGetRandomUnusedSolidName(Gender gender, string requiredLastName = null) { NameTriple nameTriple = null; if (Rand.Value < 0.5f) { nameTriple = Prefs.RandomPreferredName(); if (nameTriple != null && (nameTriple.UsedThisGame || (requiredLastName != null && nameTriple.Last != requiredLastName))) { nameTriple = null; } } List <NameTriple> listForGender = PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Either); List <NameTriple> list = (gender != Gender.Male) ? PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Female) : PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Male); float num = ((float)listForGender.Count + 0.1f) / ((float)(listForGender.Count + list.Count) + 0.1f); List <NameTriple> list2; if (Rand.Value < num) { list2 = listForGender; } else { list2 = list; } NameTriple result; if (list2.Count == 0) { Log.Error("Empty solid pawn name list for gender: " + gender + ".", false); result = null; } else if (nameTriple != null && list2.Contains(nameTriple)) { result = nameTriple; } else { list2.Shuffle <NameTriple>(); NameTriple nameTriple2 = (from name in list2 where (requiredLastName == null || !(name.Last != requiredLastName)) && !name.UsedThisGame select name).FirstOrDefault <NameTriple>(); result = nameTriple2; } return(result); }
public static void InitOnNewGame() { ListAllyAvailable.Clear(); ListAllySpawned.Clear(); #if TESTING /* */ const int TOTAL = 5; for (int i = 0; i < TOTAL; ++i) { var pgr = new PawnGenerationRequest(PawnKindDef.Named("SpaceRefugee"), null, PawnGenerationContext.NonPlayer, -1, true); var newPawn = PawnGenerator.GeneratePawn(pgr); newPawn.Name = NameTriple.FromString("ReunionPawn" + i); ListAllyAvailable.Add(newPawn); } /* */ #endif }
private static PawnBio TryGetRandomUnusedSolidBioFor(string backstoryCategory, PawnKindDef kind, Gender gender, string requiredLastName) { NameTriple prefName = null; if (Rand.Value < 0.5f) { prefName = Prefs.RandomPreferredName(); if (prefName != null && (prefName.UsedThisGame || (requiredLastName != null && prefName.Last != requiredLastName))) { prefName = null; } } PawnBio result; for (;;) { result = null; IEnumerable <PawnBio> source = SolidBioDatabase.allBios.TakeRandom(20).Where(delegate(PawnBio bio) { if (bio.gender != GenderPossibility.Either) { if (gender == Gender.Male && bio.gender != GenderPossibility.Male) { return(false); } if (gender == Gender.Female && bio.gender != GenderPossibility.Female) { return(false); } } return((requiredLastName.NullOrEmpty() || !(bio.name.Last != requiredLastName)) && (prefName == null || bio.name.Equals(prefName)) && (!kind.factionLeader || bio.pirateKing) && bio.adulthood.spawnCategories.Contains(backstoryCategory) && !bio.name.UsedThisGame); }); if (PawnBioAndNameGenerator.< > f__mg$cache1 == null) { PawnBioAndNameGenerator.< > f__mg$cache1 = new Func <PawnBio, float>(PawnBioAndNameGenerator.BioSelectionWeight); } if (source.TryRandomElementByWeight(PawnBioAndNameGenerator.< > f__mg$cache1, out result) || prefName == null) { break; } prefName = null; } return(result); }
public static IEnumerable <NameTriple> AllNames() { foreach (KeyValuePair <GenderPossibility, List <NameTriple> > solidName in solidNames) { using (List <NameTriple> .Enumerator enumerator2 = solidName.Value.GetEnumerator()) { if (enumerator2.MoveNext()) { NameTriple name = enumerator2.Current; yield return(name); /*Error: Unable to find new state assignment for yield return*/; } } } yield break; IL_0114: /*Error near IL_0115: Unexpected return in MoveNext()*/; }
private static Pawn getTanya(IncidentParms parms) { var request = new PawnGenerationRequest(DefDatabase <PawnKindDef> .GetNamed("ra2_AlliedTanya"), parms.faction, PawnGenerationContext.NonPlayer, -1, false, false, false, false, true, true, 1f, false, true, true, false, false, false, false, false, 0, 0, null, 1, null, null, null, null, null, null, null, Gender.Female); var item = PawnGenerator.GeneratePawn(request); var st = item.story; var hair = DefDatabase <HairDef> .GetNamed("Curly"); var bsdb = BackstoryDatabase.allBackstories; var child = bsdb.TryGetValue("YouthSoldier99"); var old = bsdb.TryGetValue("VeteranSoldier2"); st.adulthood = old; st.childhood = child; var triple = NameTriple.FromString(item.kindDef.label); triple.ResolveMissingPieces("Adams".Translate()); item.Name = triple; var skt = item.skills; foreach (var sr in skt.skills) { sr.Level = 20; } st.bodyType = BodyTypeDefOf.Female; st.hairDef = hair; st.hairColor = new Color(1, 0.8f, 0); //st.SkinColor = new UnityEngine.Color(0.98f,0.76f,0.71f); st.melanin = 0f; //item.story = st; return(item); }
protected override bool TryExecuteWorker(IncidentParms parms) { Map map = (Map)parms.target; IntVec3 loc; if (!this.TryFindEntryCell(map, out loc)) { return(false); } Gender?gender = null; if (this.def.pawnFixedGender != Gender.None) { gender = new Gender?(this.def.pawnFixedGender); } PawnKindDef pawnKind = PawnKindDefOf.Slave; Faction ofAncients = Faction.OfAncients; bool pawnMustBeCapableOfViolence = this.def.pawnMustBeCapableOfViolence; Gender? fixedGender = gender; PawnGenerationRequest request = new PawnGenerationRequest(pawnKind, ofAncients, PawnGenerationContext.NonPlayer, -1, true, false, false, false, true, pawnMustBeCapableOfViolence, 20f, false, true, true, false, false, false, false, null, null, null, null, null, fixedGender, null, null); List <Pawn> prisoners = new List <Pawn>(); Pawn pawn = PawnGenerator.GeneratePawn(request); NameTriple oldName = pawn.Name as NameTriple; NameTriple newName = new NameTriple(oldName.First, viewer.username.CapitalizeFirst(), oldName.Last); pawn.Name = newName; pawn.guest.SetGuestStatus(Faction.OfPlayer, true); prisoners.Add(pawn); parms.raidArrivalMode = PawnsArrivalModeDefOf.CenterDrop; if (!parms.raidArrivalMode.Worker.TryResolveRaidSpawnCenter(parms)) { return(false); } parms.raidArrivalMode.Worker.Arrive(prisoners, parms); //GenSpawn.Spawn(pawn, loc, map, WipeMode.Vanish); string text = $"A prisoner named {viewer.username.CapitalizeFirst()} has escaped from maximum security space prison. Will you capture or let them go?"; string label = "Prisoner: " + viewer.username.CapitalizeFirst(); PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref text, ref label, pawn); Find.LetterStack.ReceiveLetter(label, text, LetterDefOf.NeutralEvent, pawn, null, null); return(true); }
private static NameTriple GeneratePawnName_Shuffled(Pawn pawn, string forcedLastName = null) { PawnNameCategory pawnNameCategory = pawn.RaceProps.nameCategory; if (pawnNameCategory == PawnNameCategory.NoName) { Log.Message("Can't create a name of type NoName. Defaulting to HumanStandard."); pawnNameCategory = PawnNameCategory.HumanStandard; } NameBank nameBank = PawnNameDatabaseShuffled.BankOf(pawnNameCategory); string name = nameBank.GetName(PawnNameSlot.First, pawn.gender); string text = (forcedLastName == null) ? nameBank.GetName(PawnNameSlot.Last) : forcedLastName; int num = 0; string nick; do { num++; if (Rand.Value < 0.15f) { Gender gender = pawn.gender; if (Rand.Value < 0.5f) { gender = Gender.None; } nick = nameBank.GetName(PawnNameSlot.Nick, gender); } else if (Rand.Value < 0.5f) { nick = name; } else { nick = text; } }while (num < 50 && NameUseChecker.AllPawnsNamesEverUsed.Any(delegate(Name x) { NameTriple nameTriple = x as NameTriple; return(nameTriple != null && nameTriple.Nick == nick); })); return(new NameTriple(name, nick, text)); }
public override void PostSpawnSetup() { base.PostSpawnSetup(); this.psykerPowerManager = new PsykerPowerManager(this); ChaosFollowerPawnKindDef pdef = this.psyker.kindDef as ChaosFollowerPawnKindDef; if (pdef != null && pdef.RenamePawns) { string rawName = NameGenerator.GenerateName(pdef.OverridingNameRulePack, delegate(string x) { NameTriple nameTriple4 = NameTriple.FromString(x); nameTriple4.ResolveMissingPieces(null); return(!nameTriple4.UsedThisGame); }, false); NameTriple nameTriple = NameTriple.FromString(rawName); nameTriple.CapitalizeNick(); nameTriple.ResolveMissingPieces(null); psyker.Name = nameTriple; } }
public static bool ChangeNameAfterMarriage(Pawn firstPawn, Pawn secondPawn, MarriageNameChange changeName) { if (changeName != 0) { Pawn man = null; Pawn woman = null; DetermineManAndWomanSpouses(firstPawn, secondPawn, out man, out woman); NameTriple nameTriple = man.Name as NameTriple; NameTriple nameTriple2 = woman.Name as NameTriple; if (nameTriple == null || nameTriple2 == null) { return(false); } string last = ((changeName == MarriageNameChange.MansName) ? nameTriple.Last : nameTriple2.Last); man.Name = new NameTriple(nameTriple.First, nameTriple.Nick, last); woman.Name = new NameTriple(nameTriple2.First, nameTriple2.Nick, last); return(true); } return(false); }
private void DoNameInput() { NameTriple nameTriple = pawn.Name as NameTriple; string first = nameTriple.First; string nick = nameTriple.Nick; string last = nameTriple.Last; Rect rect = new Rect(rectCard.x + (rectCard.width * .85f), rectCard.y + (rectCard.height * .26f), PawnPortraitSize.x, PawnPortraitSize.y * .2f); Rect rectOffset = new Rect(0f, PawnPortraitSize.y * .22f, 0f, 0f); string strFirst = Widgets.TextField(rect, first); if (strFirst.Length <= 12 && validNameRegex.IsMatch(strFirst)) { first = strFirst; } string strNick = Widgets.TextField(KrozzyUtilities.RectAddition(rect, rectOffset), nick); if (strNick.Length <= 9 && validNameRegex.IsMatch(strNick)) { nick = strNick; } string strLast = Widgets.TextField(KrozzyUtilities.RectAddition(KrozzyUtilities.RectAddition(rect, rectOffset), rectOffset), last); if (strLast.Length <= 12 && validNameRegex.IsMatch(strLast)) { last = strLast; } if (nameTriple.First != first || nameTriple.Nick != nick || nameTriple.Last != last) { pawn.Name = new NameTriple(first, nick, last); } TooltipHandler.TipRegion(rect, "FirstNameDesc".Translate()); TooltipHandler.TipRegion(KrozzyUtilities.RectAddition(rect, rectOffset), "ShortIdentifierDesc".Translate()); TooltipHandler.TipRegion(KrozzyUtilities.RectAddition(KrozzyUtilities.RectAddition(rect, rectOffset), rectOffset), "LastNameDesc".Translate()); }
public static NameTriple TryGetRandomUnusedSolidName(Gender gender, string requiredLastName = null) { NameTriple nameTriple = null; if (Rand.Value < 0.5f) { nameTriple = Prefs.RandomPreferredName(); if (nameTriple != null && (nameTriple.UsedThisGame || (requiredLastName != null && nameTriple.Last != requiredLastName))) { nameTriple = null; } } List <NameTriple> listForGender = PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Either); List <NameTriple> list = (gender != Gender.Male) ? PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Female) : PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Male); float num = ((float)listForGender.Count + 0.1f) / ((float)(listForGender.Count + list.Count) + 0.1f); List <NameTriple> list2 = (!(Rand.Value < num)) ? list : listForGender; if (list2.Count == 0) { Log.Error("Empty solid pawn name list for gender: " + gender + "."); return(null); } if (nameTriple != null && list2.Contains(nameTriple)) { return(nameTriple); } list2.Shuffle(); return(list2.Where(delegate(NameTriple name) { if (requiredLastName != null && name.Last != requiredLastName) { return false; } if (name.UsedThisGame) { return false; } return true; }).FirstOrDefault()); }
public static Pawn GenerateVampire(int generation, BloodlineDef bloodline, Pawn sire, Faction vampFaction = null, bool firstVampire = false) { //Lower generation vampires are impossibly old. float?math = sire != null ? sire.ageTracker.AgeChronologicalYearsFloat + new FloatRange(100, 300).RandomInRange : generation > 4 ? Mathf.Clamp(2000 - generation * Rand.Range(20, 200), 16, 2000) : 100000 - generation * Rand.Range(10000, 50000); Faction faction = vampFaction != null ? vampFaction : generation < 7 ? Find.FactionManager.FirstFactionOfDef(VampDefOf.ROMV_LegendaryVampires) : VampireUtility.RandVampFaction; HarmonyPatches.VampireGenInProgress = true; PawnGenerationRequest request = new PawnGenerationRequest( DetermineKindDef(generation), faction, PawnGenerationContext.NonPlayer, -1, true, false, false, false, true, true, 20f, false, true, true, false, false, false, false, false, 0, 0, null, 0, null, null, null, null, null, math, null, null); Pawn pawn = PawnGenerator.GeneratePawn(request); if (DebugSettings.godMode) { Log.Message(pawn.Name + " Age:" + pawn.ageTracker.AgeNumberString + " Generation:" + generation); } HarmonyPatches.VampireGenInProgress = false; if (firstVampire) { NameTriple caineName = new NameTriple("Caine", "Caine", "Darkfather"); pawn.Name = caineName; pawn.gender = Gender.Male; } pawn.story.hairColor = PawnHairColors.RandomHairColor(pawn.story.SkinColor, 20); if (!bloodline.allowsHair) { pawn.story.hairDef = DefDatabase <HairDef> .GetNamed("Shaved"); } pawn.VampComp().InitializeVampirism(sire, bloodline, generation, firstVampire); pawn.ageTracker.AgeBiologicalTicks = (long)(math * GenDate.TicksPerYear); //TryGiveVampirismHediff(pawn, generation, bloodline, sire, firstVampire); return(pawn); }
public bool TryAssigningUserToPawn(string username, Pawn pawnToAssign) { if (username == "" || TryGetPawnAssignedToUser(username, out Pawn pawnAssigned)) { return(false); } if (PawnQueueSettings.renameAssignedPawns) { NameTriple oldName = pawnToAssign.Name as NameTriple; pawnToAssign.Name = new NameTriple(oldName.First, username, oldName.Last); } pawnsTracked.Add(username, pawnToAssign); if (viewersInQueue.Contains(username)) { viewersInQueue.Remove(username); } return(true); }
// RimWorld.PawnBioAndNameGenerator public static void GeneratePawnName(Pawn pawn, NameStyle style, string forcedLastName, ref Name __result) { if (pawn != null && pawn.Faction != null && pawn.Faction.def.defName == "RE_Player") { var ruleMaker = pawn.gender == Gender.Female ? DefDatabase <RulePackDef> .GetNamed("RE_STARSNamerFemale") : DefDatabase <RulePackDef> .GetNamed("RE_STARSNamerMale"); string rawName = NameGenerator.GenerateName(ruleMaker, delegate(string x) { NameTriple nameTriple4 = NameTriple.FromString(x); nameTriple4.ResolveMissingPieces(forcedLastName); return(!nameTriple4.UsedThisGame); }); NameTriple nameTriple = NameTriple.FromString(rawName); nameTriple.CapitalizeNick(); nameTriple.ResolveMissingPieces(forcedLastName); __result = nameTriple; } }
public override void TryExecute() { PawnKindDef pawnKind = PawnKindDefOf.Colonist; Faction ofPlayer = Faction.OfPlayer; bool pawnMustBeCapableOfViolence = true; PawnGenerationRequest request = new PawnGenerationRequest(pawnKind, ofPlayer, PawnGenerationContext.NonPlayer, -1, true, false, false, false, true, pawnMustBeCapableOfViolence, 20f, false, true, true, false, false, false, false, null, null, null, null, null, null, null, null); Pawn pawn = PawnGenerator.GeneratePawn(request); NameTriple old = pawn.Name as NameTriple; pawn.Name = new NameTriple(old.First, viewer.username, old.Last); GenSpawn.Spawn(pawn, loc, map, WipeMode.Vanish); string label = "Viewer Joins"; string text = $"A new pawn has been purchased by {viewer.username}, let's welcome them to the colony."; PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref text, ref label, pawn); Find.LetterStack.ReceiveLetter(label, text, LetterDefOf.PositiveEvent, pawn, null, null); Current.Game.GetComponent <GameComponentPawns>().AssignUserToPawn(viewer.username, pawn); viewer.TakeViewerCoins(this.storeIncident.cost); viewer.CalculateNewKarma(this.storeIncident.karmaType, storeIncident.cost); VariablesHelpers.SendPurchaseMessage($"@{viewer.username} has purchased a pawn and is joining the colony.", separateChannel); }
protected override bool TryExecuteWorker(IncidentParms parms) { if (viewer == null) { return(false); } Helper.Log("Executing viewer quest"); int tile; if (!this.TryFindTile(out tile)) { return(false); } Site site = SiteMaker.TryMakeSite_SingleSitePart(SiteCoreDefOf.PrisonerWillingToJoin, "PrisonerRescueQuestThreat", tile, null, true, null, true, null); if (site == null) { return(false); } site.sitePartsKnown = true; Pawn pawn = PrisonerWillingToJoinQuestUtility.GeneratePrisoner(tile, site.Faction); NameTriple oldName = pawn.Name as NameTriple; pawn.Name = new NameTriple(oldName.First, viewer.username.CapitalizeFirst(), oldName.Last); site.GetComponent <PrisonerWillingToJoinComp>().pawn.TryAdd(pawn, true); int randomInRange = SiteTuning.QuestSiteTimeoutDaysRange.RandomInRange; site.GetComponent <TimeoutComp>().StartTimeout(randomInRange * 60000); Find.WorldObjects.Add(site); string text; string label; this.GetLetterText(pawn, site, site.parts.FirstOrDefault <SitePart>(), randomInRange, out text, out label); Find.LetterStack.ReceiveLetter(label, text, this.def.letterDef, site, site.Faction, null); return(true); }
public static NameTriple TryGetRandomUnusedSolidName(Gender gender, string requiredLastName = null) { List <NameTriple> listForGender = PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Either); List <NameTriple> list = ((gender == Gender.Male) ? PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Male) : PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Female)); float num = ((float)listForGender.Count + 0.1f) / ((float)(listForGender.Count + list.Count) + 0.1f); List <NameTriple> list2 = ((!(Rand.Value < num)) ? list : listForGender); if (list2.Count == 0) { Log.Error(string.Concat("Empty solid pawn name list for gender: ", gender, ".")); return(null); } if (Rand.Value < 0.5f) { tmpNames.Clear(); tmpNames.AddRange(Prefs.PreferredNames); tmpNames.Shuffle(); foreach (string tmpName in tmpNames) { NameTriple nameTriple = NameTriple.FromString(tmpName); if (list2.Contains(nameTriple) && !nameTriple.UsedThisGame && (requiredLastName == null || !(nameTriple.Last != requiredLastName))) { return(nameTriple); } } } list2.Shuffle(); return(list2.Where(delegate(NameTriple name) { if (requiredLastName != null && name.Last != requiredLastName) { return false; } return (!name.UsedThisGame) ? true : false; }).FirstOrDefault()); }
private static Name GetName(ThingDef pawnDef, Map map) { string AIs = ""; IEnumerable <Pawn> pawns = null; // Added to catch error when Common Core isn't loaded.. try { pawns = map.mapPawns.FreeColonists; //pawns = Radar.FindAllPawns(map); } catch { } if (pawns != null) { int c = pawns.Where(p => p.def.defName == pawnDef.defName).Count(); if (c > 0) { AIs = " " + (c + 1).ToString(); } } string first = "AIPawn_Basename_first".Translate(); // "Mobile Artificial Intelligence" string nick = "AIPawn_Basename_nick".Translate() + AIs; // "Mai" + AIs string last = "AIPawn_Basename_last".Translate(); // " " if (enhancedAI) { nick = nick.ToUpper(); } NameTriple pawnName = new NameTriple(first, nick, last); return(pawnName); }
public static void DrawCharacterCard(Rect rect, Pawn pawn, Action randomizeCallback = null, Rect creationRect = default(Rect)) { bool creationMode = randomizeCallback != null; GUI.BeginGroup(creationMode ? creationRect : rect); Rect rect2 = new Rect(0f, 0f, 300f, 30f); NameTriple nameTriple = pawn.Name as NameTriple; if (creationMode && nameTriple != null) { Rect rect3 = new Rect(rect2); rect3.width *= 0.333f; Rect rect4 = new Rect(rect2); rect4.width *= 0.333f; rect4.x += rect4.width; Rect rect5 = new Rect(rect2); rect5.width *= 0.333f; rect5.x += rect4.width * 2f; string name = nameTriple.First; string name2 = nameTriple.Nick; string name3 = nameTriple.Last; DoNameInputRect(rect3, ref name, 12); if (nameTriple.Nick == nameTriple.First || nameTriple.Nick == nameTriple.Last) { GUI.color = new Color(1f, 1f, 1f, 0.5f); } DoNameInputRect(rect4, ref name2, 16); GUI.color = Color.white; DoNameInputRect(rect5, ref name3, 12); if (nameTriple.First != name || nameTriple.Nick != name2 || nameTriple.Last != name3) { pawn.Name = new NameTriple(name, string.IsNullOrEmpty(name2) ? name : name2, name3); } TooltipHandler.TipRegionByKey(rect3, "FirstNameDesc"); TooltipHandler.TipRegionByKey(rect4, "ShortIdentifierDesc"); TooltipHandler.TipRegionByKey(rect5, "LastNameDesc"); } else { rect2.width = 999f; Text.Font = GameFont.Medium; Widgets.Label(rect2, pawn.Name.ToStringFull); Text.Font = GameFont.Small; } if (randomizeCallback != null) { Rect rect6 = new Rect(creationRect.width - 24f - 100f, 0f, 100f, rect2.height); if (Widgets.ButtonText(rect6, "Randomize".Translate())) { SoundDefOf.Tick_Tiny.PlayOneShotOnCamera(); randomizeCallback(); } UIHighlighter.HighlightOpportunity(rect6, "RandomizePawn"); } if (creationMode) { Widgets.InfoCardButton(creationRect.width - 24f, 0f, pawn); } else if (!pawn.health.Dead) { float num = PawnCardSize(pawn).x - 85f; if (pawn.IsFreeColonist && pawn.Spawned) { Rect rect7 = new Rect(num, 0f, 30f, 30f); if (Mouse.IsOver(rect7)) { TooltipHandler.TipRegion(rect7, PawnBanishUtility.GetBanishButtonTip(pawn)); } if (Widgets.ButtonImage(rect7, TexButton.Banish)) { if (pawn.Downed) { Messages.Message("MessageCantBanishDownedPawn".Translate(pawn.LabelShort, pawn).AdjustedFor(pawn), pawn, MessageTypeDefOf.RejectInput, historical: false); } else { PawnBanishUtility.ShowBanishPawnConfirmationDialog(pawn); } } num -= 40f; } if (pawn.IsColonist) { Rect rect8 = new Rect(num, 0f, 30f, 30f); TooltipHandler.TipRegionByKey(rect8, "RenameColonist"); if (Widgets.ButtonImage(rect8, TexButton.Rename)) { Find.WindowStack.Add(new Dialog_NamePawn(pawn)); } num -= 40f; } if (pawn.IsFreeColonist && !pawn.IsQuestLodger() && pawn.royalty != null && pawn.royalty.AllTitlesForReading.Count > 0) { Rect rect9 = new Rect(num, 0f, 30f, 30f); TooltipHandler.TipRegionByKey(rect9, "RenounceTitle"); if (Widgets.ButtonImage(rect9, TexButton.RenounceTitle)) { FloatMenuUtility.MakeMenu(pawn.royalty.AllTitlesForReading, (RoyalTitle title) => "RenounceTitle".Translate() + ": " + "TitleOfFaction".Translate(title.def.GetLabelCapFor(pawn), title.faction.GetCallLabel()), (RoyalTitle title) => delegate { RoyalTitleUtility.FindLostAndGainedPermits(title.def, null, out List <RoyalTitlePermitDef> _, out List <RoyalTitlePermitDef> lostPermits); StringBuilder stringBuilder = new StringBuilder(); if (lostPermits.Count > 0) { stringBuilder.AppendLine("RenounceTitleWillLoosePermits".Translate(pawn.Named("PAWN")) + ":"); foreach (RoyalTitlePermitDef item2 in lostPermits) { stringBuilder.AppendLine("- " + item2.LabelCap + " (" + FirstTitleWithPermit(item2).GetLabelFor(pawn) + ")"); } stringBuilder.AppendLine(); } if (!title.faction.def.renounceTitleMessage.NullOrEmpty()) { stringBuilder.AppendLine(title.faction.def.renounceTitleMessage); } Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("RenounceTitleDescription".Translate(pawn.Named("PAWN"), "TitleOfFaction".Translate(title.def.GetLabelCapFor(pawn), title.faction.GetCallLabel()).Named("TITLE"), stringBuilder.ToString().TrimEndNewlines().Named("EFFECTS")), delegate { pawn.royalty.SetTitle(title.faction, null, grantRewards: false); }, destructive: true)); }); } num -= 40f; } } List <GenUI.AnonymousStackElement> stackElements = new List <GenUI.AnonymousStackElement>(); Text.Font = GameFont.Small; string text = pawn.MainDesc(writeFaction: false); Vector2 vector = Text.CalcSize(text); Rect rect10 = new Rect(0f, 45f, vector.x + 5f, 24f); Widgets.Label(rect10, text); float height = Text.CalcHeight(text, rect10.width); Rect rect11 = new Rect(rect10.x, rect10.y, rect10.width, height); if (Mouse.IsOver(rect11)) { TooltipHandler.TipRegion(rect11, () => pawn.ageTracker.AgeTooltipString, 6873641); } float num2 = 0f; if (pawn.Faction != null && !pawn.Faction.def.hidden) { float num3 = Text.CalcSize(pawn.Faction.Name).x + 22f + 15f; stackElements.Add(new GenUI.AnonymousStackElement { drawer = delegate(Rect r) { Rect rect23 = new Rect(r.x, r.y, r.width, r.height); Color color7 = GUI.color; GUI.color = StackElementBackground; GUI.DrawTexture(rect23, BaseContent.WhiteTex); GUI.color = color7; Widgets.DrawHighlightIfMouseover(rect23); Rect rect24 = new Rect(r.x, r.y, r.width, r.height); Rect position4 = new Rect(r.x + 1f, r.y + 1f, 20f, 20f); GUI.color = pawn.Faction.Color; GUI.DrawTexture(position4, pawn.Faction.def.FactionIcon); GUI.color = color7; Widgets.Label(new Rect(rect24.x + rect24.height + 5f, rect24.y, rect24.width - 10f, rect24.height), pawn.Faction.Name); if (Widgets.ButtonInvisible(rect23)) { if (creationMode) { Find.WindowStack.Add(new Dialog_FactionDuringLanding()); } else { Find.MainTabsRoot.SetCurrentTab(MainButtonDefOf.Factions); } } if (Mouse.IsOver(rect23)) { TipSignal tip6 = new TipSignal(() => "Faction".Translate() + "\n\n" + "FactionDesc".Translate(pawn.Named("PAWN")) + "\n\n" + "ClickToViewFactions".Translate(), pawn.Faction.loadID * 37); TooltipHandler.TipRegion(rect23, tip6); } }, width = num3 }); num2 += num3; } bool flag = false; float num4 = rect.width - vector.x - 10f; tmpExtraFactions.Clear(); QuestUtility.GetExtraFactionsFromQuestParts(pawn, tmpExtraFactions); foreach (ExtraFaction tmpExtraFaction in tmpExtraFactions) { ExtraFaction localExtraFaction = tmpExtraFaction; string factionName = localExtraFaction.faction.Name; bool drawExtraFactionIcon = localExtraFaction.factionType == ExtraFactionType.HomeFaction; float num5 = ElementWidth(); if (flag || num2 + num5 >= num4) { factionName = "..."; num5 = ElementWidth(); flag = true; } stackElements.Add(new GenUI.AnonymousStackElement { drawer = delegate(Rect r) { Rect rect20 = new Rect(r.x, r.y, r.width, r.height); Rect rect21 = drawExtraFactionIcon ? rect20 : r; Color color6 = GUI.color; GUI.color = StackElementBackground; GUI.DrawTexture(rect21, BaseContent.WhiteTex); GUI.color = color6; Widgets.DrawHighlightIfMouseover(rect21); if (drawExtraFactionIcon) { Rect rect22 = new Rect(r.x, r.y, r.width, r.height); Rect position3 = new Rect(r.x + 1f, r.y + 1f, 20f, 20f); GUI.color = localExtraFaction.faction.Color; GUI.DrawTexture(position3, localExtraFaction.faction.def.FactionIcon); GUI.color = color6; Widgets.Label(new Rect(rect22.x + rect22.height + 5f, rect22.y, rect22.width - 10f, rect22.height), factionName); } else { Widgets.Label(new Rect(r.x + 5f, r.y, r.width - 10f, r.height), factionName); } if (Widgets.ButtonInvisible(rect20)) { Find.MainTabsRoot.SetCurrentTab(MainButtonDefOf.Factions); } if (Mouse.IsOver(rect21)) { TipSignal tip5 = new TipSignal(() => localExtraFaction.factionType.GetLabel().CapitalizeFirst() + "\n\n" + "ExtraFactionDesc".Translate(pawn.Named("PAWN")) + "\n\n" + "ClickToViewFactions".Translate(), localExtraFaction.faction.loadID ^ 0x738AC053); TooltipHandler.TipRegion(rect21, tip5); } }, width = num5 }); num2 += num5; float ElementWidth() { return(Text.CalcSize(factionName).x + (float)(drawExtraFactionIcon ? 22 : 0) + 15f); } } GenUI.DrawElementStack(new Rect(vector.x + 10f, 45f, 999f, 24f), 22f, stackElements, delegate(Rect r, GenUI.AnonymousStackElement obj) { obj.drawer(r); }, (GenUI.AnonymousStackElement obj) => obj.width, 4f, 5f, allowOrderOptimization: false); stackElements.Clear(); float curY = 72f; if (pawn.royalty != null && pawn.royalty.AllTitlesForReading.Count > 0) { foreach (RoyalTitle title2 in pawn.royalty.AllTitlesForReading) { RoyalTitle localTitle = title2; string titleLabel = localTitle.def.GetLabelCapFor(pawn) + " (" + pawn.royalty.GetFavor(localTitle.faction) + ")"; stackElements.Add(new GenUI.AnonymousStackElement { drawer = delegate(Rect r) { Color color5 = GUI.color; Rect rect18 = new Rect(r.x, r.y, r.width + 22f, r.height); GUI.color = StackElementBackground; GUI.DrawTexture(rect18, BaseContent.WhiteTex); GUI.color = color5; int favor = pawn.royalty.GetFavor(localTitle.faction); if (Mouse.IsOver(rect18)) { Widgets.DrawHighlight(rect18); } Rect rect19 = new Rect(r.x, r.y, r.width + 22f, r.height); Rect position2 = new Rect(r.x + 1f, r.y + 1f, 20f, 20f); GUI.color = title2.faction.Color; GUI.DrawTexture(position2, localTitle.faction.def.FactionIcon); GUI.color = color5; Widgets.Label(new Rect(rect19.x + rect19.height + 5f, rect19.y, rect19.width - 10f, rect19.height), titleLabel); if (Widgets.ButtonInvisible(rect18)) { Find.WindowStack.Add(new Dialog_InfoCard(localTitle.def, localTitle.faction)); } if (Mouse.IsOver(rect18)) { TipSignal tip4 = new TipSignal(() => GetTitleTipString(pawn, localTitle.faction, localTitle, favor), (int)curY * 37); TooltipHandler.TipRegion(rect18, tip4); } }, width = Text.CalcSize(titleLabel).x + 15f }); } } QuestUtility.AppendInspectStringsFromQuestParts(delegate(string str, Quest quest) { stackElements.Add(new GenUI.AnonymousStackElement { drawer = delegate(Rect r) { Color color4 = GUI.color; GUI.color = StackElementBackground; GUI.DrawTexture(r, BaseContent.WhiteTex); GUI.color = color4; DoQuestLine(r, str, quest); }, width = GetQuestLineSize(str, quest).x }); }, pawn, out int _); curY += GenUI.DrawElementStack(new Rect(0f, curY, rect.width - 5f, 50f), 22f, stackElements, delegate(Rect r, GenUI.AnonymousStackElement obj) { obj.drawer(r); }, (GenUI.AnonymousStackElement obj) => obj.width).height; if (stackElements.Any()) { curY += 10f; } Rect leftRect = new Rect(0f, curY, 250f, 355f); Rect position = new Rect(leftRect.xMax, curY, 258f, 355f); GUI.BeginGroup(leftRect); curY = 0f; Pawn pawnLocal = pawn; List <Ability> abilities = (from a in pawn.abilities.abilities orderby a.def.level, a.def.EntropyGain select a).ToList(); int numSections = abilities.Any() ? 5 : 4; float num6 = (float)Enum.GetValues(typeof(BackstorySlot)).Length * 22f; if (pawn.story != null && pawn.story.title != null) { num6 += 22f; } List <LeftRectSection> list = new List <LeftRectSection>(); LeftRectSection item = new LeftRectSection { rect = new Rect(0f, 0f, leftRect.width, num6), drawer = delegate(Rect sectionRect) { float num12 = sectionRect.y; Text.Font = GameFont.Small; foreach (BackstorySlot value6 in Enum.GetValues(typeof(BackstorySlot))) { Backstory backstory = pawn.story.GetBackstory(value6); if (backstory != null) { Rect rect14 = new Rect(sectionRect.x, num12, leftRect.width, 22f); if (Mouse.IsOver(rect14)) { Widgets.DrawHighlight(rect14); } if (Mouse.IsOver(rect14)) { TooltipHandler.TipRegion(rect14, backstory.FullDescriptionFor(pawn).Resolve()); } Text.Anchor = TextAnchor.MiddleLeft; string str2 = (value6 == BackstorySlot.Adulthood) ? "Adulthood".Translate() : "Childhood".Translate(); Widgets.Label(rect14, str2 + ":"); Text.Anchor = TextAnchor.UpperLeft; Rect rect15 = new Rect(rect14); rect15.x += 90f; rect15.width -= 90f; string str3 = backstory.TitleCapFor(pawn.gender); Widgets.Label(rect15, str3.Truncate(rect15.width)); num12 += rect14.height; } } if (pawn.story != null && pawn.story.title != null) { Rect rect16 = new Rect(sectionRect.x, num12, leftRect.width, 22f); Text.Anchor = TextAnchor.MiddleLeft; Widgets.Label(rect16, "Current".Translate() + ":"); Text.Anchor = TextAnchor.UpperLeft; Rect rect17 = new Rect(rect16); rect17.x += 90f; rect17.width -= 90f; Widgets.Label(rect17, pawn.story.title); num12 += rect16.height; } } }; list.Add(item); num6 = 30f; WorkTags disabledTags = pawn.CombinedDisabledWorkTags; List <WorkTags> disabledTagsList = WorkTagsFrom(disabledTags).ToList(); bool allowWorkTagVerticalLayout = false; GenUI.StackElementWidthGetter <WorkTags> workTagWidthGetter = (WorkTags tag) => Text.CalcSize(tag.LabelTranslated().CapitalizeFirst()).x + 10f; if (disabledTags == WorkTags.None) { num6 += 22f; } else { disabledTagsList.Sort(delegate(WorkTags a, WorkTags b) { int num11 = GetWorkTypeDisableCauses(pawn, a).Any((object c) => c is RoyalTitleDef) ? 1 : (-1); int value5 = GetWorkTypeDisableCauses(pawn, b).Any((object c) => c is RoyalTitleDef) ? 1 : (-1); return(num11.CompareTo(value5)); }); num6 += GenUI.DrawElementStack(new Rect(0f, 0f, leftRect.width - 5f, leftRect.height), 22f, disabledTagsList, delegate { }, workTagWidthGetter, 4f, 5f, allowOrderOptimization: false).height; num6 += 12f; allowWorkTagVerticalLayout = (GenUI.DrawElementStackVertical(new Rect(0f, 0f, rect.width, leftRect.height / (float)numSections), 22f, disabledTagsList, delegate { }, workTagWidthGetter).width <= leftRect.width); } item = new LeftRectSection { rect = new Rect(0f, 0f, leftRect.width, num6), drawer = delegate(Rect sectionRect) { Text.Font = GameFont.Medium; float currentY3 = sectionRect.y; Widgets.Label(new Rect(sectionRect.x, currentY3, 200f, 30f), "IncapableOf".Translate(pawn)); currentY3 += 30f; Text.Font = GameFont.Small; if (disabledTags == WorkTags.None) { GUI.color = Color.gray; Rect rect13 = new Rect(sectionRect.x, currentY3, leftRect.width, 24f); if (Mouse.IsOver(rect13)) { Widgets.DrawHighlight(rect13); } Widgets.Label(rect13, "None".Translate()); TooltipHandler.TipRegionByKey(rect13, "None"); } else { GenUI.StackElementDrawer <WorkTags> drawer = delegate(Rect r, WorkTags tag) { Color color3 = GUI.color; GUI.color = StackElementBackground; GUI.DrawTexture(r, BaseContent.WhiteTex); GUI.color = color3; GUI.color = GetDisabledWorkTagLabelColor(pawn, tag); if (Mouse.IsOver(r)) { Widgets.DrawHighlight(r); } Widgets.Label(new Rect(r.x + 5f, r.y, r.width - 10f, r.height), tag.LabelTranslated().CapitalizeFirst()); if (Mouse.IsOver(r)) { TooltipHandler.TipRegion(tip: new TipSignal(() => GetWorkTypeDisabledCausedBy(pawnLocal, tag) + "\n" + GetWorkTypesDisabledByWorkTag(tag), (int)currentY3 * 32), rect: r); } }; if (allowWorkTagVerticalLayout) { GenUI.DrawElementStackVertical(new Rect(sectionRect.x, currentY3, leftRect.width - 5f, leftRect.height / (float)numSections), 22f, disabledTagsList, drawer, workTagWidthGetter); } else { GenUI.DrawElementStack(new Rect(sectionRect.x, currentY3, leftRect.width - 5f, leftRect.height / (float)numSections), 22f, disabledTagsList, drawer, workTagWidthGetter, 5f); } } GUI.color = Color.white; } }; list.Add(item); num6 = 30f; List <Trait> traits = pawn.story.traits.allTraits; num6 = ((traits != null && traits.Count != 0) ? (num6 + GenUI.DrawElementStack(new Rect(0f, 0f, leftRect.width - 5f, leftRect.height), 22f, pawn.story.traits.allTraits, delegate { }, (Trait trait) => Text.CalcSize(trait.LabelCap).x + 10f).height) : (num6 + 22f)); num6 += 12f; item = new LeftRectSection { rect = new Rect(0f, 0f, leftRect.width, num6), drawer = delegate(Rect sectionRect) { Text.Font = GameFont.Medium; float currentY2 = sectionRect.y; Widgets.Label(new Rect(sectionRect.x, currentY2, 200f, 30f), "Traits".Translate()); currentY2 += 30f; Text.Font = GameFont.Small; if (traits == null || traits.Count == 0) { Color color = GUI.color; GUI.color = Color.gray; Rect rect12 = new Rect(sectionRect.x, currentY2, leftRect.width, 24f); if (Mouse.IsOver(rect12)) { Widgets.DrawHighlight(rect12); } Widgets.Label(rect12, "None".Translate()); currentY2 += rect12.height + 2f; TooltipHandler.TipRegionByKey(rect12, "None"); GUI.color = color; } else { GenUI.DrawElementStack(new Rect(sectionRect.x, currentY2, leftRect.width - 5f, leftRect.height / (float)numSections), 22f, pawn.story.traits.allTraits, delegate(Rect r, Trait trait) { Color color2 = GUI.color; GUI.color = StackElementBackground; GUI.DrawTexture(r, BaseContent.WhiteTex); GUI.color = color2; if (Mouse.IsOver(r)) { Widgets.DrawHighlight(r); } Widgets.Label(new Rect(r.x + 5f, r.y, r.width - 10f, r.height), trait.LabelCap); if (Mouse.IsOver(r)) { TooltipHandler.TipRegion(tip: new TipSignal(() => trait.TipString(pawn), (int)currentY2 * 37), rect: r); } }, (Trait trait) => Text.CalcSize(trait.LabelCap).x + 10f); } } }; list.Add(item); if (abilities.Any()) { num6 = 30f; num6 += GenUI.DrawElementStack(new Rect(0f, 0f, leftRect.width - 5f, leftRect.height), 32f, abilities, delegate { }, (Ability abil) => 32f).height; item = new LeftRectSection { rect = new Rect(0f, 0f, leftRect.width, num6), drawer = delegate(Rect sectionRect) { Text.Font = GameFont.Medium; float currentY = sectionRect.y; Widgets.Label(new Rect(sectionRect.x, currentY, 200f, 30f), "Abilities".Translate(pawn)); currentY += 30f; Text.Font = GameFont.Small; GenUI.DrawElementStack(new Rect(sectionRect.x, currentY, leftRect.width - 5f, leftRect.height), 32f, abilities, delegate(Rect r, Ability abil) { GUI.DrawTexture(r, BaseContent.ClearTex); if (Mouse.IsOver(r)) { Widgets.DrawHighlight(r); } if (Widgets.ButtonImage(r, abil.def.uiIcon, doMouseoverSound: false)) { Find.WindowStack.Add(new Dialog_InfoCard(abil.def)); } if (Mouse.IsOver(r)) { TipSignal tip = new TipSignal(() => abil.def.GetTooltip() + "\n\n" + "ClickToLearnMore".Translate(), (int)currentY * 37); TooltipHandler.TipRegion(r, tip); } }, (Ability abil) => 32f); GUI.color = Color.white; } }; list.Add(item); } float num7 = leftRect.height / (float)list.Count; float num8 = 0f; for (int i = 0; i < list.Count; i++) { LeftRectSection value = list[i]; if (value.rect.height > num7) { num8 += value.rect.height - num7; value.calculatedSize = value.rect.height; } else { value.calculatedSize = num7; } list[i] = value; } bool flag2 = false; float num9 = 0f; if (num8 > 0f) { LeftRectSection value2 = list[0]; float num10 = value2.rect.height + 12f; num8 -= value2.calculatedSize - num10; value2.calculatedSize = num10; list[0] = value2; } while (num8 > 0f) { bool flag3 = true; for (int j = 0; j < list.Count; j++) { LeftRectSection value3 = list[j]; if (value3.calculatedSize - value3.rect.height > 0f) { value3.calculatedSize -= 1f; num8 -= 1f; flag3 = false; } list[j] = value3; } if (!flag3) { continue; } for (int k = 0; k < list.Count; k++) { LeftRectSection value4 = list[k]; if (k > 0) { value4.calculatedSize = Mathf.Max(value4.rect.height, num7); } else { value4.calculatedSize = value4.rect.height + 22f; } num9 += value4.calculatedSize; list[k] = value4; } flag2 = true; break; } if (flag2) { Widgets.BeginScrollView(new Rect(0f, 0f, leftRect.width, leftRect.height), ref leftRectScrollPos, new Rect(0f, 0f, leftRect.width - 16f, num9)); } curY = 0f; for (int l = 0; l < list.Count; l++) { LeftRectSection leftRectSection = list[l]; leftRectSection.drawer(new Rect(0f, curY, leftRect.width, leftRectSection.rect.height)); curY += leftRectSection.calculatedSize; } if (flag2) { Widgets.EndScrollView(); } GUI.EndGroup(); GUI.BeginGroup(position); SkillUI.DrawSkillsOf(mode: (Current.ProgramState != ProgramState.Playing) ? SkillUI.SkillDrawMode.Menu : SkillUI.SkillDrawMode.Gameplay, p: pawn, offset: new Vector2(0f, 0f)); GUI.EndGroup(); GUI.EndGroup(); RoyalTitleDef FirstTitleWithPermit(RoyalTitlePermitDef permitDef) { //return title.faction.def.RoyalTitlesAwardableInSeniorityOrderForReading.First((RoyalTitleDef t) => t.permits != null && t.permits.Contains(permitDef)); Log.Message("Todo:>>>>"); return(default);
private bool AlreadyPreferred(NameTriple name) { return(Prefs.PreferredNames.Contains(name.ToString())); }
static bool Prefix(Gender gender, ref NameTriple __result, string requiredLastName = null) { if (REB_Initializer.REB_Backstories.Count < 1) { return(true); } NameTriple nameTriple = null; if (Rand.Value < 0.5f) { nameTriple = Prefs.RandomPreferredName(); if (nameTriple != null && (nameTriple.UsedThisGame || (requiredLastName != null && nameTriple.Last != requiredLastName))) { nameTriple = null; } } List <NameTriple> listForGender; List <NameTriple> list; listForGender = PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Either); list = (gender != Gender.Male) ? PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Female) : PawnNameDatabaseSolid.GetListForGender(GenderPossibility.Male); float num = ((float)listForGender.Count + 0.1f) / ((float)(listForGender.Count + list.Count) + 0.1f); List <NameTriple> list2; if (listForGender.Count == 0) { list2 = list; } else { if (Rand.Value < num) { list2 = listForGender; } else { list2 = list; } } if (list2.Count == 0) { Log.Error("Empty solid pawn name list for gender: " + gender + "."); __result = null; return(false); } if (nameTriple != null && list2.Contains(nameTriple)) { __result = nameTriple; return(false); } for (int i = 0; i < list2.Count; i++) { NameTriple nameTriple2 = list2[i]; if (requiredLastName == null || !(nameTriple2.Last != requiredLastName)) { if (!nameTriple2.UsedThisGame) { REB_PawnBioAndNameGenerator.tempNames.Add(nameTriple2); } } } NameTriple result; REB_PawnBioAndNameGenerator.tempNames.TryRandomElement(out result); REB_PawnBioAndNameGenerator.tempNames.Clear(); __result = result; return(false); }
static bool Prefix(List <string> backstoryCategories, PawnKindDef kind, Gender gender, string requiredLastName, ref PawnBio __result) { if (REB_Initializer.REB_Backstories.Count < 1) { return(true); } NameTriple nameTriple = null; if (Rand.Value < 0.5f) { nameTriple = Prefs.RandomPreferredName(); if (nameTriple != null && (nameTriple.UsedThisGame || (requiredLastName != null && nameTriple.Last != requiredLastName))) { nameTriple = null; } } while (true) { int i = 0; while (i < SolidBioDatabase.allBios.Count) { PawnBio pawnBio = SolidBioDatabase.allBios[i]; if (pawnBio.gender == GenderPossibility.Either) { goto IL_8F; } if (gender != Gender.Male || pawnBio.gender == GenderPossibility.Male) { if (gender != Gender.Female || pawnBio.gender == GenderPossibility.Female) { goto IL_8F; } } IL_14E: i++; continue; IL_8F: if (!requiredLastName.NullOrEmpty() && pawnBio.name.Last != requiredLastName) { goto IL_14E; } if (pawnBio.name.UsedThisGame) { goto IL_14E; } if (nameTriple != null && !pawnBio.name.Equals(nameTriple)) { goto IL_14E; } for (int j = 0; j < pawnBio.adulthood.spawnCategories.Count; j++) { if (backstoryCategories.Contains(pawnBio.adulthood.spawnCategories[j])) { REB_PawnBioAndNameGenerator.tempBios.Add(pawnBio); break; } } goto IL_14E; } if (REB_PawnBioAndNameGenerator.tempBios.Count != 0 || nameTriple == null) { break; } nameTriple = null; } PawnBio result; REB_PawnBioAndNameGenerator.tempBios.TryRandomElement(out result); REB_PawnBioAndNameGenerator.tempBios.Clear(); __result = result; return(false); }