public static void DoItemsListForShip(Rect inRect, ref float curY, ref List <Thing> tmpSingleThing, ITab_Pawn_FormingCaravan instance) { LordJob_FormAndSendCaravanShip lordJob_FormAndSendCaravanShip = (LordJob_FormAndSendCaravanShip)(Find.Selector.SingleSelectedThing as Pawn).GetLord().LordJob; Rect position = new Rect(0f, curY, (inRect.width - 10f) / 2f, inRect.height); float a = 0f; GUI.BeginGroup(position); Widgets.ListSeparator(ref a, position.width, "ItemsToLoad".Translate()); bool flag = false; foreach (TransferableOneWay transferableOneWay in lordJob_FormAndSendCaravanShip.transferables) { if (transferableOneWay.CountToTransfer > 0 && transferableOneWay.HasAnyThing) { flag = true; MethodInfo doThingRow = AccessTools.Method(type: typeof(ITab_Pawn_FormingCaravan), name: "DoThingRow"); object[] args = new object[] { transferableOneWay.ThingDef, transferableOneWay.CountToTransfer, transferableOneWay.things, position.width, a }; doThingRow.Invoke(instance, args); a = (float)args[4]; } } if (!flag) { Widgets.NoneLabel(ref a, position.width, null); } GUI.EndGroup(); Rect position2 = new Rect((inRect.width + 10f) / 2f, curY, (inRect.width - 10f) / 2f, inRect.height); float b = 0f; GUI.BeginGroup(position2); Widgets.ListSeparator(ref b, position2.width, "LoadedItems".Translate()); bool flag2 = false; foreach (Pawn pawn in lordJob_FormAndSendCaravanShip.lord.ownedPawns) { if (!pawn.inventory.UnloadEverything) { foreach (Thing thing in pawn.inventory.innerContainer) { flag2 = true; tmpSingleThing.Clear(); tmpSingleThing.Add(thing); MethodInfo doThingRow = AccessTools.Method(type: typeof(ITab_Pawn_FormingCaravan), name: "DoThingRow"); object[] args = new object[] { thing.def, thing.stackCount, tmpSingleThing, position2.width, b }; doThingRow.Invoke(instance, args); b = (float)args[4]; } } } if (!flag2) { Widgets.NoneLabel(ref b, position.width, null); } GUI.EndGroup(); curY += Mathf.Max(a, b); }
public static float CapacityLeft(LordJob_FormAndSendCaravanShip lordJob) { float num = CollectionsMassCalculator.MassUsageTransferables(lordJob.transferables, IgnorePawnsInventoryMode.IgnoreIfAssignedToUnload, false, false); List <ThingCount> tmpCaravanPawns = new List <ThingCount>(); for (int i = 0; i < lordJob.lord.ownedPawns.Count; i++) { Pawn pawn = lordJob.lord.ownedPawns[i]; tmpCaravanPawns.Add(new ThingCount(pawn, pawn.stackCount)); } num += CollectionsMassCalculator.MassUsage(tmpCaravanPawns, IgnorePawnsInventoryMode.IgnoreIfAssignedToUnload, false, false); float num2 = CollectionsMassCalculator.Capacity(tmpCaravanPawns, null); tmpCaravanPawns.Clear(); return(num2 - num); }