public IEnumerable <string> GetUnmetThroneroomRequirements(bool includeOnGracePeriod = true, bool onlyOnGracePeriod = false) { if (pawn.ownership.AssignedThrone == null) { yield break; } RoyalTitle highestTitle = HighestTitleWithThroneRoomRequirements(); if (highestTitle != null) { Room throneRoom = pawn.ownership.AssignedThrone.GetRoom(); if (throneRoom != null) { RoyalTitleDef prevTitle = highestTitle.def.GetPreviousTitle(highestTitle.faction); foreach (RoomRequirement throneRoomRequirement in highestTitle.def.throneRoomRequirements) { if (!throneRoomRequirement.Met(throneRoom, pawn)) { bool flag = highestTitle.RoomRequirementGracePeriodActive(pawn); bool flag2 = prevTitle != null && !prevTitle.HasSameThroneroomRequirement(throneRoomRequirement); if ((!onlyOnGracePeriod || (flag2 && flag)) && (!flag || !flag2 || includeOnGracePeriod)) { yield return(throneRoomRequirement.LabelCap(throneRoom)); } } } } } }
public IEnumerable <string> GetUnmetBedroomRequirements(bool includeOnGracePeriod = true, bool onlyOnGracePeriod = false) { RoyalTitle royalTitle = HighestTitleWithBedroomRequirements(); if (royalTitle != null) { bool gracePeriodActive = royalTitle.RoomRequirementGracePeriodActive(pawn); RoyalTitleDef prevTitle = royalTitle.def.GetPreviousTitle(royalTitle.faction); if (HasPersonalBedroom()) { Room bedroom = pawn.ownership.OwnedRoom; foreach (RoomRequirement bedroomRequirement in royalTitle.def.GetBedroomRequirements(pawn)) { if (!bedroomRequirement.Met(bedroom)) { bool flag = prevTitle != null && !prevTitle.HasSameBedroomRequirement(bedroomRequirement); if ((!onlyOnGracePeriod || (flag && gracePeriodActive)) && (!gracePeriodActive || !flag || includeOnGracePeriod)) { yield return(bedroomRequirement.LabelCap(bedroom)); } } } } } }
public override TaggedString GetExplanation() { return(defaultExplanation + "\n" + Targets.Select(delegate(Pawn t) { RoyalTitle royalTitle = t.royalty.HighestTitleWithBedroomRequirements(); RoyalTitleDef royalTitleDef = (royalTitle.RoomRequirementGracePeriodActive(t) ? royalTitle.def.GetPreviousTitle(royalTitle.faction) : royalTitle.def); string[] array = t.royalty.GetUnmetBedroomRequirements(includeOnGracePeriod: false).ToArray(); string[] array2 = t.royalty.GetUnmetBedroomRequirements(includeOnGracePeriod: true, onlyOnGracePeriod: true).ToArray(); bool flag = royalTitleDef != null && array.Length != 0; StringBuilder stringBuilder = new StringBuilder(); if (flag) { stringBuilder.Append(t.LabelShort + " (" + royalTitleDef.GetLabelFor(t.gender) + "):\n" + array.ToLineList("- ")); } if (array2.Length != 0) { if (flag) { stringBuilder.Append("\n\n"); } stringBuilder.Append(t.LabelShort + " (" + royalTitle.def.GetLabelFor(t.gender) + ", " + "RoomRequirementGracePeriodDesc".Translate(royalTitle.RoomRequirementGracePeriodDaysLeft.ToString("0.0")) + ")" + ":\n" + array2.ToLineList("- ")); } return stringBuilder.ToString(); }).ToLineList("\n")); }