Exemple #1
0
        private void RemoveCarriedItemFromTransferablesOrDrop(Thing carried, Pawn carrier, List <TransferableOneWay> transferables)
        {
            TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatchingDesperate(carried, transferables, TransferAsOneMode.PodsOrCaravanPacking);
            int num;

            if (transferableOneWay == null)
            {
                num = carried.stackCount;
            }
            else if (transferableOneWay.CountToTransfer >= carried.stackCount)
            {
                transferableOneWay.AdjustBy(-carried.stackCount);
                transferableOneWay.things.Remove(carried);
                num = 0;
            }
            else
            {
                num = carried.stackCount - transferableOneWay.CountToTransfer;
                transferableOneWay.AdjustTo(0);
            }
            if (num > 0)
            {
                Thing thing = carried.SplitOff(num);
                if (carrier.SpawnedOrAnyParentSpawned)
                {
                    GenPlace.TryPlaceThing(thing, carrier.PositionHeld, carrier.MapHeld, ThingPlaceMode.Near, null, null);
                }
                else
                {
                    thing.Destroy(DestroyMode.Vanish);
                }
            }
        }
 private void SetLoadedItemsToLoad()
 {
     for (int j = 0; j < transporters.Count; j++)
     {
         int i;
         for (i = 0; i < transporters[j].innerContainer.Count; i++)
         {
             TransferableOneWay transferableOneWay = transferables.Find((TransferableOneWay x) => x.things.Contains(transporters[j].innerContainer[i]));
             if (transferableOneWay != null && transferableOneWay.CanAdjustBy(transporters[j].innerContainer[i].stackCount).Accepted)
             {
                 transferableOneWay.AdjustBy(transporters[j].innerContainer[i].stackCount);
             }
         }
         if (transporters[j].leftToLoad == null)
         {
             continue;
         }
         for (int k = 0; k < transporters[j].leftToLoad.Count; k++)
         {
             TransferableOneWay transferableOneWay2 = transporters[j].leftToLoad[k];
             if (transferableOneWay2.CountToTransfer != 0 && transferableOneWay2.HasAnyThing)
             {
                 TransferableOneWay transferableOneWay3 = TransferableUtility.TransferableMatchingDesperate(transferableOneWay2.AnyThing, transferables, TransferAsOneMode.PodsOrCaravanPacking);
                 if (transferableOneWay3 != null && transferableOneWay3.CanAdjustBy(transferableOneWay2.CountToTransferToDestination).Accepted)
                 {
                     transferableOneWay3.AdjustBy(transferableOneWay2.CountToTransferToDestination);
                 }
             }
         }
     }
 }
        public void AddToTheToLoadList(TransferableOneWay t, int count)
        {
            if (!t.HasAnyThing || count <= 0)
            {
                return;
            }
            if (leftToLoad == null)
            {
                leftToLoad = new List <TransferableOneWay>();
            }
            TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching(t.AnyThing, leftToLoad, TransferAsOneMode.PodsOrCaravanPacking);

            if (transferableOneWay != null)
            {
                for (int i = 0; i < t.things.Count; i++)
                {
                    if (!transferableOneWay.things.Contains(t.things[i]))
                    {
                        transferableOneWay.things.Add(t.things[i]);
                    }
                }
                if (transferableOneWay.CanAdjustBy(count).Accepted)
                {
                    transferableOneWay.AdjustBy(count);
                }
            }
            else
            {
                TransferableOneWay transferableOneWay2 = new TransferableOneWay();
                leftToLoad.Add(transferableOneWay2);
                transferableOneWay2.things.AddRange(t.things);
                transferableOneWay2.AdjustTo(count);
            }
        }
Exemple #4
0
 private void SubtractFromToLoadList(Thing t, int count)
 {
     if (leftToLoad != null)
     {
         TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatchingDesperate(t, leftToLoad, TransferAsOneMode.PodsOrCaravanPacking);
         if (transferableOneWay != null)
         {
             transferableOneWay.AdjustBy(-count);
             if (transferableOneWay.CountToTransfer <= 0)
             {
                 leftToLoad.Remove(transferableOneWay);
             }
             if (!AnyInGroupHasAnythingLeftToLoad)
             {
                 Messages.Message("MessageFinishedLoadingTransporters".Translate(), parent, MessageTypeDefOf.TaskCompletion);
             }
         }
     }
 }
        public int SubtractFromToLoadList(Thing t, int count, bool sendMessageOnFinished = true)
        {
            if (leftToLoad == null)
            {
                return(0);
            }
            TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatchingDesperate(t, leftToLoad, TransferAsOneMode.PodsOrCaravanPacking);

            if (transferableOneWay == null)
            {
                return(0);
            }
            if (transferableOneWay.CountToTransfer <= 0)
            {
                return(0);
            }
            int num = Mathf.Min(count, transferableOneWay.CountToTransfer);

            transferableOneWay.AdjustBy(-num);
            if (transferableOneWay.CountToTransfer <= 0)
            {
                leftToLoad.Remove(transferableOneWay);
            }
            if (sendMessageOnFinished && !AnyInGroupHasAnythingLeftToLoad)
            {
                CompShuttle comp = parent.GetComp <CompShuttle>();
                if (comp == null || comp.AllRequiredThingsLoaded)
                {
                    if (Props.max1PerGroup)
                    {
                        Messages.Message("MessageFinishedLoadingTransporterSingle".Translate(), parent, MessageTypeDefOf.TaskCompletion);
                    }
                    else
                    {
                        Messages.Message("MessageFinishedLoadingTransporters".Translate(), parent, MessageTypeDefOf.TaskCompletion);
                    }
                }
            }
            return(num);
        }
Exemple #6
0
        private void SubtractFromToLoadList(Thing t, int count)
        {
            if (this.leftToLoad == null)
            {
                return;
            }
            TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatchingDesperate(t, this.leftToLoad);

            if (transferableOneWay == null)
            {
                return;
            }
            transferableOneWay.AdjustBy(-count);
            if (transferableOneWay.CountToTransfer <= 0)
            {
                this.leftToLoad.Remove(transferableOneWay);
            }
            if (!this.AnyInGroupHasAnythingLeftToLoad)
            {
                Messages.Message("MessageFinishedLoadingTransporters".Translate(), this.parent, MessageTypeDefOf.TaskCompletion);
            }
        }