public static float MassUsageLeftAfterTradeableTransfer(List <Thing> allCurrentThings, List <Tradeable> tradeables, IgnorePawnsInventoryMode ignoreInventory, bool includePawnsMass = false, bool ignoreCorpsesGearAndInventory = false)
        {
            TransferableUtility.SimulateTradeableTransfer(allCurrentThings, tradeables, CollectionsMassCalculator.tmpThingStackParts);
            float result = CollectionsMassCalculator.MassUsage(CollectionsMassCalculator.tmpThingStackParts, ignoreInventory, includePawnsMass, ignoreCorpsesGearAndInventory);

            CollectionsMassCalculator.tmpThingStackParts.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 MassUsage <T>(List <T> things, IgnorePawnsInventoryMode ignoreInventory, bool includePawnsMass = false, bool ignoreSpawnedCorpsesGearAndInventory = false) 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.MassUsage(CollectionsMassCalculator.tmpThingCounts, ignoreInventory, includePawnsMass, ignoreSpawnedCorpsesGearAndInventory);

            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 MassUsageTransferables(List <TransferableOneWay> transferables, IgnorePawnsInventoryMode ignoreInventory, bool includePawnsMass = false, bool ignoreSpawnedCorpsesGearAndInventory = false)
        {
            CollectionsMassCalculator.tmpThingCounts.Clear();
            for (int i = 0; i < transferables.Count; i++)
            {
                TransferableUtility.TransferNoSplit(transferables[i].things, transferables[i].CountToTransfer, delegate(Thing originalThing, int toTake)
                {
                    CollectionsMassCalculator.tmpThingCounts.Add(new ThingCount(originalThing, toTake));
                }, false, false);
            }
            float result = CollectionsMassCalculator.MassUsage(CollectionsMassCalculator.tmpThingCounts, ignoreInventory, includePawnsMass, ignoreSpawnedCorpsesGearAndInventory);

            CollectionsMassCalculator.tmpThingCounts.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);
        }
        public static float MassUsageLeftAfterTransfer(List <TransferableOneWay> transferables, IgnorePawnsInventoryMode ignoreInventory, bool includePawnsMass = false, bool ignoreCorpsesGearAndInventory = false)
        {
            CollectionsMassCalculator.tmpThingStackParts.Clear();
            for (int i = 0; i < transferables.Count; i++)
            {
                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.tmpThingStackParts.Add(new ThingStackPart(originalThing, toTake));
                }, false, false);
            }
            float result = CollectionsMassCalculator.MassUsage(CollectionsMassCalculator.tmpThingStackParts, ignoreInventory, includePawnsMass, ignoreCorpsesGearAndInventory);

            CollectionsMassCalculator.tmpThingStackParts.Clear();
            return(result);
        }