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);
            }
        }
        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);
                }
            }
        }
Exemple #3
0
 public void AddToTheToLoadList(TransferableOneWay t, int count)
 {
     if (t.HasAnyThing && t.CountToTransfer > 0)
     {
         if (leftToLoad == null)
         {
             leftToLoad = new List <TransferableOneWay>();
         }
         if (TransferableUtility.TransferableMatching(t.AnyThing, leftToLoad, TransferAsOneMode.PodsOrCaravanPacking) != null)
         {
             Log.Error("Transferable already exists.");
         }
         else
         {
             TransferableOneWay transferableOneWay = new TransferableOneWay();
             leftToLoad.Add(transferableOneWay);
             transferableOneWay.things.AddRange(t.things);
             transferableOneWay.AdjustTo(count);
         }
     }
 }
Exemple #4
0
        public void AddToTheToLoadList(TransferableOneWay t, int count)
        {
            if (!t.HasAnyThing || t.CountToTransfer <= 0)
            {
                return;
            }
            if (this.leftToLoad == null)
            {
                this.leftToLoad = new List <TransferableOneWay>();
            }
            if (TransferableUtility.TransferableMatching <TransferableOneWay>(t.AnyThing, this.leftToLoad, TransferAsOneMode.PodsOrCaravanPacking) != null)
            {
                Log.Error("Transferable already exists.", false);
                return;
            }
            TransferableOneWay transferableOneWay = new TransferableOneWay();

            this.leftToLoad.Add(transferableOneWay);
            transferableOneWay.things.AddRange(t.things);
            transferableOneWay.AdjustTo(count);
        }