public static float CapacityLeftAfterTransfer(List <TransferableOneWay> transferables, StringBuilder explanation = null) { CollectionsMassCalculator.tmpThingCounts.Clear(); for (int i = 0; i < transferables.Count; i++) { if (transferables[i].HasAnyThing) { if (transferables[i].AnyThing is Pawn) { CollectionsMassCalculator.thingsInReverse.Clear(); CollectionsMassCalculator.thingsInReverse.AddRange(transferables[i].things); CollectionsMassCalculator.thingsInReverse.Reverse(); TransferableUtility.TransferNoSplit(CollectionsMassCalculator.thingsInReverse, transferables[i].MaxCount - transferables[i].CountToTransfer, delegate(Thing originalThing, int toTake) { CollectionsMassCalculator.tmpThingCounts.Add(new ThingCount(originalThing, toTake)); }, false, false); } } } CollectionsMassCalculator.thingsInReverse.Clear(); float result = CollectionsMassCalculator.Capacity(CollectionsMassCalculator.tmpThingCounts, explanation); CollectionsMassCalculator.tmpThingCounts.Clear(); return(result); }
public static float CapacityLeftAfterTradeableTransfer(List <Thing> allCurrentThings, List <Tradeable> tradeables) { TransferableUtility.SimulateTradeableTransfer(allCurrentThings, tradeables, CollectionsMassCalculator.tmpThingStackParts); float result = CollectionsMassCalculator.Capacity(CollectionsMassCalculator.tmpThingStackParts); CollectionsMassCalculator.tmpThingStackParts.Clear(); return(result); }
public static float CapacityLeftAfterTradeableTransfer(List <Thing> allCurrentThings, List <Tradeable> tradeables, StringBuilder explanation = null) { CollectionsMassCalculator.tmpThingCounts.Clear(); TransferableUtility.SimulateTradeableTransfer(allCurrentThings, tradeables, CollectionsMassCalculator.tmpThingCounts); float result = CollectionsMassCalculator.Capacity(CollectionsMassCalculator.tmpThingCounts, explanation); CollectionsMassCalculator.tmpThingCounts.Clear(); return(result); }
public static float Capacity <T>(List <T> things, StringBuilder explanation = null) where T : Thing { CollectionsMassCalculator.tmpThingCounts.Clear(); for (int i = 0; i < things.Count; i++) { CollectionsMassCalculator.tmpThingCounts.Add(new ThingCount(things[i], things[i].stackCount)); } float result = CollectionsMassCalculator.Capacity(CollectionsMassCalculator.tmpThingCounts, explanation); CollectionsMassCalculator.tmpThingCounts.Clear(); return(result); }
public static float Capacity <T>(List <T> things) where T : Thing { CollectionsMassCalculator.tmpThingStackParts.Clear(); for (int i = 0; i < things.Count; i++) { CollectionsMassCalculator.tmpThingStackParts.Add(new ThingStackPart((Thing)(object)things[i], ((Thing)(object)things[i]).stackCount)); } float result = CollectionsMassCalculator.Capacity(CollectionsMassCalculator.tmpThingStackParts); CollectionsMassCalculator.tmpThingStackParts.Clear(); return(result); }
public static float CapacityTransferables(List <TransferableOneWay> transferables) { CollectionsMassCalculator.tmpThingStackParts.Clear(); for (int i = 0; i < transferables.Count; i++) { if (transferables[i].HasAnyThing && transferables[i].AnyThing is Pawn) { TransferableUtility.TransferNoSplit(transferables[i].things, transferables[i].CountToTransfer, delegate(Thing originalThing, int toTake) { CollectionsMassCalculator.tmpThingStackParts.Add(new ThingStackPart(originalThing, toTake)); }, false, false); } } float result = CollectionsMassCalculator.Capacity(CollectionsMassCalculator.tmpThingStackParts); CollectionsMassCalculator.tmpThingStackParts.Clear(); return(result); }