public static void AppendWaterWorthToCaravanInspectString(Caravan c, StringBuilder stringBuilder) { if (AnyPawnOutOfWater(c, out var worstDehydrationText)) { // 水不足のポーンがいる stringBuilder.AppendLine(); stringBuilder.Append(MizuStrings.InspectCaravanOutOfWater.Translate()); if (worstDehydrationText.NullOrEmpty()) { return; } // 脱水症状のテキストがあるならそれも追加 stringBuilder.Append(" "); stringBuilder.Append(worstDehydrationText); stringBuilder.Append("."); } else { // 水不足のポーンがいないなら、総量をチェック var daysWorthOfWater = DaysWorthOfWaterCalculator.ApproxDaysWorthOfWater(c); if (!(daysWorthOfWater < InfiniteDaysWorthOfWaterThreshold)) { return; } // 水は大量というわけでないなら、水残量を表示 stringBuilder.AppendLine(); stringBuilder.Append( string.Format(MizuStrings.InspectCaravanDaysOfWater.Translate(), daysWorthOfWater.ToString("0.#"))); } }
public static float ApproxDaysWorthOfWater(List <TransferableOneWay> transferables, IgnorePawnsInventoryMode ignoreInventory) { tmpThingCounts.Clear(); tmpPawns.Clear(); for (int i = 0; i < transferables.Count; i++) { TransferableOneWay transferableOneWay = transferables[i]; if (transferableOneWay.HasAnyThing) { if (transferableOneWay.AnyThing is Pawn) { for (int j = 0; j < transferableOneWay.CountToTransfer; j++) { tmpPawns.Add((Pawn)transferableOneWay.things[j]); } } else { tmpThingCounts.Add(new ThingCount(transferableOneWay.ThingDef, transferableOneWay.CountToTransfer)); } } } float result = DaysWorthOfWaterCalculator.ApproxDaysWorthOfWater(tmpPawns, tmpThingCounts, ignoreInventory); tmpThingCounts.Clear(); tmpPawns.Clear(); return(result); }
public static float DaysWorthOfWater_FormCaravan(Dialog_FormCaravan dialog) { if (MizuCaravanUtility.daysWorthOfWaterDirty) { MizuCaravanUtility.daysWorthOfWaterDirty = false; MizuCaravanUtility.cachedDaysWorthOfWater = DaysWorthOfWaterCalculator.ApproxDaysWorthOfWater(dialog.transferables, IgnorePawnsInventoryMode.IgnoreIfAssignedToUnload); } return(MizuCaravanUtility.cachedDaysWorthOfWater); }
public static float DaysWorthOfWater_LoadTransporters(List <TransferableOneWay> transferables) { //if (MizuCaravanUtility.daysWorthOfWaterDirty) //{ MizuCaravanUtility.daysWorthOfWaterDirty = false; MizuCaravanUtility.cachedDaysWorthOfWater = DaysWorthOfWaterCalculator.ApproxDaysWorthOfWater(transferables, IgnorePawnsInventoryMode.IgnoreIfAssignedToUnload); //} return(MizuCaravanUtility.cachedDaysWorthOfWater); }
public static float ApproxDaysWorthOfWater(Caravan caravan) { return(DaysWorthOfWaterCalculator.ApproxDaysWorthOfWater(caravan.PawnsListForReading, null, IgnorePawnsInventoryMode.DontIgnore)); }