public string GetInBedForMedicalReasonsInspectStringLine() { if (this.usedBeds.Count == 0) { return(null); } Caravan_BedsTracker.tmpPawnLabels.Clear(); foreach (KeyValuePair <Pawn, Building_Bed> current in this.usedBeds) { if (!this.caravan.carryTracker.IsCarried(current.Key)) { if (CaravanBedUtility.WouldBenefitFromRestingInBed(current.Key)) { Caravan_BedsTracker.tmpPawnLabels.Add(current.Key.LabelShort); } } } if (!Caravan_BedsTracker.tmpPawnLabels.Any <string>()) { return(null); } string str = (Caravan_BedsTracker.tmpPawnLabels.Count <= 5) ? Caravan_BedsTracker.tmpPawnLabels.ToCommaList(true) : (Caravan_BedsTracker.tmpPawnLabels.Take(5).ToCommaList(false) + "..."); Caravan_BedsTracker.tmpPawnLabels.Clear(); return("UsingBedrollsDueToIllness".Translate() + ": " + str); }
private void RecalculateUsedBeds() { this.usedBeds.Clear(); if (!this.caravan.Spawned) { return; } Caravan_BedsTracker.tmpUsableBeds.Clear(); this.GetUsableBeds(Caravan_BedsTracker.tmpUsableBeds); if (!this.caravan.pather.MovingNow) { Caravan_BedsTracker.tmpUsableBeds.SortByDescending((Building_Bed x) => x.GetStatValue(StatDefOf.BedRestEffectiveness, true)); for (int i = 0; i < this.caravan.pawns.Count; i++) { Pawn pawn = this.caravan.pawns[i]; if (pawn.needs != null && pawn.needs.rest != null) { Building_Bed andRemoveFirstAvailableBedFor = this.GetAndRemoveFirstAvailableBedFor(pawn, Caravan_BedsTracker.tmpUsableBeds); if (andRemoveFirstAvailableBedFor != null) { this.usedBeds.Add(pawn, andRemoveFirstAvailableBedFor); } } } } else { Caravan_BedsTracker.tmpUsableBeds.SortByDescending((Building_Bed x) => x.GetStatValue(StatDefOf.ImmunityGainSpeedFactor, true)); for (int j = 0; j < this.caravan.pawns.Count; j++) { Pawn pawn2 = this.caravan.pawns[j]; if (pawn2.needs != null && pawn2.needs.rest != null) { if (CaravanBedUtility.WouldBenefitFromRestingInBed(pawn2)) { if (!this.caravan.pather.MovingNow || pawn2.CarriedByCaravan()) { Building_Bed andRemoveFirstAvailableBedFor2 = this.GetAndRemoveFirstAvailableBedFor(pawn2, Caravan_BedsTracker.tmpUsableBeds); if (andRemoveFirstAvailableBedFor2 != null) { this.usedBeds.Add(pawn2, andRemoveFirstAvailableBedFor2); } } } } } } Caravan_BedsTracker.tmpUsableBeds.Clear(); }
private void RecalculateUsedBeds() { usedBeds.Clear(); if (caravan.Spawned) { tmpUsableBeds.Clear(); GetUsableBeds(tmpUsableBeds); if (!caravan.pather.MovingNow) { tmpUsableBeds.SortByDescending((Building_Bed x) => x.GetStatValue(StatDefOf.BedRestEffectiveness)); for (int i = 0; i < caravan.pawns.Count; i++) { Pawn pawn = caravan.pawns[i]; if (pawn.needs != null && pawn.needs.rest != null) { Building_Bed andRemoveFirstAvailableBedFor = GetAndRemoveFirstAvailableBedFor(pawn, tmpUsableBeds); if (andRemoveFirstAvailableBedFor != null) { usedBeds.Add(pawn, andRemoveFirstAvailableBedFor); } } } } else { tmpUsableBeds.SortByDescending((Building_Bed x) => x.GetStatValue(StatDefOf.ImmunityGainSpeedFactor)); for (int j = 0; j < caravan.pawns.Count; j++) { Pawn pawn2 = caravan.pawns[j]; if (pawn2.needs != null && pawn2.needs.rest != null && CaravanBedUtility.WouldBenefitFromRestingInBed(pawn2) && (!caravan.pather.MovingNow || pawn2.CarriedByCaravan())) { Building_Bed andRemoveFirstAvailableBedFor2 = GetAndRemoveFirstAvailableBedFor(pawn2, tmpUsableBeds); if (andRemoveFirstAvailableBedFor2 != null) { usedBeds.Add(pawn2, andRemoveFirstAvailableBedFor2); } } } } tmpUsableBeds.Clear(); } }
public string GetInspectStringLine() { if (!carriedPawns.Any()) { return(null); } tmpPawnLabels.Clear(); int num = 0; for (int i = 0; i < carriedPawns.Count; i++) { tmpPawnLabels.Add(carriedPawns[i].LabelShort); if (caravan.beds.IsInBed(carriedPawns[i])) { num++; } } string str = (tmpPawnLabels.Count > 5) ? (tmpPawnLabels.Take(5).ToCommaList() + "...") : tmpPawnLabels.ToCommaList(useAnd: true); string result = CaravanBedUtility.AppendUsingBedsLabel("BeingCarriedDueToIllness".Translate() + ": " + str.CapitalizeFirst(), num); tmpPawnLabels.Clear(); return(result); }
public string GetInBedForMedicalReasonsInspectStringLine() { if (usedBeds.Count == 0) { return(null); } tmpPawnLabels.Clear(); foreach (KeyValuePair <Pawn, Building_Bed> usedBed in usedBeds) { if (!caravan.carryTracker.IsCarried(usedBed.Key) && CaravanBedUtility.WouldBenefitFromRestingInBed(usedBed.Key)) { tmpPawnLabels.Add(usedBed.Key.LabelShort); } } if (!tmpPawnLabels.Any()) { return(null); } string str = (tmpPawnLabels.Count <= 5) ? tmpPawnLabels.ToCommaList(useAnd: true) : (tmpPawnLabels.Take(5).ToCommaList() + "..."); tmpPawnLabels.Clear(); return("UsingBedrollsDueToIllness".Translate() + ": " + str); }
public string GetInspectStringLine() { if (!this.carriedPawns.Any <Pawn>()) { return(null); } Caravan_CarryTracker.tmpPawnLabels.Clear(); int num = 0; for (int i = 0; i < this.carriedPawns.Count; i++) { Caravan_CarryTracker.tmpPawnLabels.Add(this.carriedPawns[i].LabelShort); if (this.caravan.beds.IsInBed(this.carriedPawns[i])) { num++; } } string str = (Caravan_CarryTracker.tmpPawnLabels.Count <= 5) ? Caravan_CarryTracker.tmpPawnLabels.ToCommaList(true) : (Caravan_CarryTracker.tmpPawnLabels.Take(5).ToCommaList(false) + "..."); string result = CaravanBedUtility.AppendUsingBedsLabel("BeingCarriedDueToIllness".Translate() + ": " + str.CapitalizeFirst(), num); Caravan_CarryTracker.tmpPawnLabels.Clear(); return(result); }
public override string GetInspectString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(base.GetInspectString()); if (stringBuilder.Length != 0) { stringBuilder.AppendLine(); } int num = 0; int num2 = 0; int num3 = 0; int num4 = 0; int num5 = 0; for (int i = 0; i < pawns.Count; i++) { if (pawns[i].IsColonist) { num++; } else if (pawns[i].RaceProps.Animal) { num2++; } else if (pawns[i].IsPrisoner) { num3++; } if (pawns[i].Downed) { num4++; } if (pawns[i].InMentalState) { num5++; } } stringBuilder.Append("CaravanColonistsCount".Translate(num, (num != 1) ? Faction.OfPlayer.def.pawnsPlural : Faction.OfPlayer.def.pawnSingular)); if (num2 == 1) { stringBuilder.Append(", " + "CaravanAnimal".Translate()); } else if (num2 > 1) { stringBuilder.Append(", " + "CaravanAnimalsCount".Translate(num2)); } if (num3 == 1) { stringBuilder.Append(", " + "CaravanPrisoner".Translate()); } else if (num3 > 1) { stringBuilder.Append(", " + "CaravanPrisonersCount".Translate(num3)); } stringBuilder.AppendLine(); if (num5 > 0) { stringBuilder.Append("CaravanPawnsInMentalState".Translate(num5)); } if (num4 > 0) { if (num5 > 0) { stringBuilder.Append(", "); } stringBuilder.Append("CaravanPawnsDowned".Translate(num4)); } if (num5 > 0 || num4 > 0) { stringBuilder.AppendLine(); } if (pather.Moving) { if (pather.ArrivalAction != null) { stringBuilder.Append(pather.ArrivalAction.ReportString); } else { stringBuilder.Append("CaravanTraveling".Translate()); } } else { SettlementBase settlementBase = CaravanVisitUtility.SettlementVisitedNow(this); if (settlementBase != null) { stringBuilder.Append("CaravanVisiting".Translate(settlementBase.Label)); } else { stringBuilder.Append("CaravanWaiting".Translate()); } } if (pather.Moving) { float num6 = (float)CaravanArrivalTimeEstimator.EstimatedTicksToArrive(this, allowCaching: true) / 60000f; stringBuilder.AppendLine(); stringBuilder.Append("CaravanEstimatedTimeToDestination".Translate(num6.ToString("0.#"))); } if (AllOwnersDowned) { stringBuilder.AppendLine(); stringBuilder.Append("AllCaravanMembersDowned".Translate()); } else if (AllOwnersHaveMentalBreak) { stringBuilder.AppendLine(); stringBuilder.Append("AllCaravanMembersMentalBreak".Translate()); } else if (ImmobilizedByMass) { stringBuilder.AppendLine(); stringBuilder.Append("CaravanImmobilizedByMass".Translate()); } if (needs.AnyPawnOutOfFood(out string malnutritionHediff)) { stringBuilder.AppendLine(); stringBuilder.Append("CaravanOutOfFood".Translate()); if (!malnutritionHediff.NullOrEmpty()) { stringBuilder.Append(" "); stringBuilder.Append(malnutritionHediff); stringBuilder.Append("."); } } if (!pather.MovingNow) { int usedBedCount = beds.GetUsedBedCount(); stringBuilder.AppendLine(); stringBuilder.Append(CaravanBedUtility.AppendUsingBedsLabel("CaravanResting".Translate(), usedBedCount)); } else { string inspectStringLine = carryTracker.GetInspectStringLine(); if (!inspectStringLine.NullOrEmpty()) { stringBuilder.AppendLine(); stringBuilder.Append(inspectStringLine); } string inBedForMedicalReasonsInspectStringLine = beds.GetInBedForMedicalReasonsInspectStringLine(); if (!inBedForMedicalReasonsInspectStringLine.NullOrEmpty()) { stringBuilder.AppendLine(); stringBuilder.Append(inBedForMedicalReasonsInspectStringLine); } } return(stringBuilder.ToString()); }
public static bool WouldBenefitFromBeingCarried(Pawn p) { return(CaravanBedUtility.WouldBenefitFromRestingInBed(p)); }