Example #1
0
        public static float CapacityLeft(LordJob_FormAndSendCaravan lordJob)
        {
            float num = CollectionsMassCalculator.MassUsageTransferables(lordJob.transferables, IgnorePawnsInventoryMode.IgnoreIfAssignedToUnload, false, false);

            CaravanFormingUtility.tmpCaravanPawns.Clear();
            for (int i = 0; i < lordJob.lord.ownedPawns.Count; i++)
            {
                Pawn pawn = lordJob.lord.ownedPawns[i];
                CaravanFormingUtility.tmpCaravanPawns.Add(new ThingCount(pawn, pawn.stackCount));
            }
            num += CollectionsMassCalculator.MassUsage(CaravanFormingUtility.tmpCaravanPawns, IgnorePawnsInventoryMode.IgnoreIfAssignedToUnload, false, false);
            float num2 = CollectionsMassCalculator.Capacity(CaravanFormingUtility.tmpCaravanPawns, null);

            CaravanFormingUtility.tmpCaravanPawns.Clear();
            return(num2 - num);
        }
Example #2
0
        public void SetupPods()
        {
            // exit if status is not planned

            if (this.Status != ShipmentStatus.Planned)
            {
                Log.Error("Can't setup pods for not planned shipment: " + this.Status.ToString());
                return;
            }

            List <TransferableOneWay> transferables = this.Transferables.ToList();

            // find transporters

            List <CompLogisticTransporter> logTransporters =
                this.sender
                .TransportersForMassAndDistance(CollectionsMassCalculator.MassUsageTransferables(transferables, IgnorePawnsInventoryMode.Ignore), this.destination.map.Tile);

            Log.Message("Transporters found: " + logTransporters.Count);

            if (logTransporters.NullOrEmpty())
            {
                Log.Message("No transporters found");
                return;
            }

            // choose which ones to use

            logTransporters = logTransporters.GetRange(0, 1);

            // initialize them

            foreach (var transporter in logTransporters)
            {
                transporter.shipmentInProgress = this;
            }

            List <CompTransporter> transporters = logTransporters.Select(t => t.Transporter).ToList();

            TransporterUtility.InitiateLoading(transporters);

            LogTransporterUtility.DistributeItems(transferables, transporters);

            this.Status = ShipmentStatus.InLoading;
        }