Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        private void AddToTransferables(Thing t)
        {
            TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching <TransferableOneWay>(t, this.transferables, TransferAsOneMode.PodsOrCaravanPacking);

            if (transferableOneWay == null)
            {
                transferableOneWay = new TransferableOneWay();
                this.transferables.Add(transferableOneWay);
            }
            transferableOneWay.things.Add(t);
        }
        private void AddToTransferables(Thing t)
        {
            TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching(t, this.transferables);

            if (transferableOneWay == null)
            {
                transferableOneWay = new TransferableOneWay();
                this.transferables.Add(transferableOneWay);
            }
            transferableOneWay.things.Add(t);
        }
Exemplo n.º 4
0
        private void AddToTradeables(Thing t, Transactor trans)
        {
            Tradeable tradeable = TransferableUtility.TransferableMatching(t, this.tradeables);

            if (tradeable == null)
            {
                Pawn pawn = t as Pawn;
                tradeable = ((pawn == null) ? new Tradeable() : new Tradeable_Pawn());
                this.tradeables.Add(tradeable);
            }
            tradeable.AddThing(t, trans);
        }
Exemplo n.º 5
0
        private void AddToTransferables(Thing t, bool setToTransferMax = false)
        {
            TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching <TransferableOneWay>(t, this.transferables, TransferAsOneMode.PodsOrCaravanPacking);

            if (transferableOneWay == null)
            {
                transferableOneWay = new TransferableOneWay();
                this.transferables.Add(transferableOneWay);
            }
            transferableOneWay.things.Add(t);
            if (setToTransferMax)
            {
                transferableOneWay.AdjustTo(transferableOneWay.CountToTransfer + t.stackCount);
            }
        }
Exemplo n.º 6
0
        private void AddToTransferables(Thing t, bool setToTransferMax = false)
        {
            TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching <TransferableOneWay>(t, this.transferables);

            if (transferableOneWay == null)
            {
                transferableOneWay = new TransferableOneWay();
                this.transferables.Add(transferableOneWay);
            }
            transferableOneWay.things.Add(t);
            if (setToTransferMax)
            {
                transferableOneWay.AdjustTo(transferableOneWay.MaxCount);
            }
        }
        private void AddToTransferables(Thing t)
        {
            TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching(t, transferables, TransferAsOneMode.PodsOrCaravanPacking);

            if (transferableOneWay == null)
            {
                transferableOneWay = new TransferableOneWay();
                transferables.Add(transferableOneWay);
            }
            if (transferableOneWay.things.Contains(t))
            {
                Log.Error("Tried to add the same thing twice to TransferableOneWay: " + t);
            }
            else
            {
                transferableOneWay.things.Add(t);
            }
        }
Exemplo n.º 8
0
        private void AddToTradeables(Thing t, Transactor trans)
        {
            Tradeable tradeable = TransferableUtility.TransferableMatching <Tradeable>(t, this.tradeables);

            if (tradeable == null)
            {
                Pawn pawn = t as Pawn;
                if (pawn != null)
                {
                    tradeable = new Tradeable_Pawn();
                }
                else
                {
                    tradeable = new Tradeable();
                }
                this.tradeables.Add(tradeable);
            }
            tradeable.AddThing(t, trans);
        }
Exemplo n.º 9
0
        private void AddToTransferables(Thing t, bool setToTransferMax = false)
        {
            TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching(t, transferables, TransferAsOneMode.PodsOrCaravanPacking);

            if (transferableOneWay == null)
            {
                transferableOneWay = new TransferableOneWay();
                transferables.Add(transferableOneWay);
            }
            if (transferableOneWay.things.Contains(t))
            {
                Log.Error("Tried to add the same thing twice to TransferableOneWay: " + t);
                return;
            }
            transferableOneWay.things.Add(t);
            if (setToTransferMax)
            {
                transferableOneWay.AdjustTo(transferableOneWay.CountToTransfer + t.stackCount);
            }
        }
Exemplo n.º 10
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);
         }
     }
 }
Exemplo n.º 11
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);
        }
Exemplo n.º 12
0
 private void AssignTransferablesToRandomTransporters()
 {
     tmpLeftToLoadCopy.Clear();
     for (int j = 0; j < transporters.Count; j++)
     {
         tmpLeftToLoadCopy.Add((transporters[j].leftToLoad != null) ? transporters[j].leftToLoad.ToList() : new List <TransferableOneWay>());
         if (transporters[j].leftToLoad != null)
         {
             transporters[j].leftToLoad.Clear();
         }
     }
     tmpLeftCountToTransfer.Clear();
     for (int k = 0; k < transferables.Count; k++)
     {
         tmpLeftCountToTransfer.Add(transferables[k], transferables[k].CountToTransfer);
     }
     if (LoadingInProgressOrReadyToLaunch)
     {
         int i;
         for (i = 0; i < transferables.Count; i++)
         {
             if (!transferables[i].HasAnyThing || tmpLeftCountToTransfer[transferables[i]] <= 0)
             {
                 continue;
             }
             for (int l = 0; l < tmpLeftToLoadCopy.Count; l++)
             {
                 TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching(transferables[i].AnyThing, tmpLeftToLoadCopy[l], TransferAsOneMode.PodsOrCaravanPacking);
                 if (transferableOneWay != null)
                 {
                     int num = Mathf.Min(tmpLeftCountToTransfer[transferables[i]], transferableOneWay.CountToTransfer);
                     if (num > 0)
                     {
                         transporters[l].AddToTheToLoadList(transferables[i], num);
                         tmpLeftCountToTransfer[transferables[i]] -= num;
                     }
                 }
                 Thing thing = transporters[l].innerContainer.FirstOrDefault((Thing x) => TransferableUtility.TransferAsOne(transferables[i].AnyThing, x, TransferAsOneMode.PodsOrCaravanPacking));
                 if (thing != null)
                 {
                     int num2 = Mathf.Min(tmpLeftCountToTransfer[transferables[i]], thing.stackCount);
                     if (num2 > 0)
                     {
                         transporters[l].AddToTheToLoadList(transferables[i], num2);
                         tmpLeftCountToTransfer[transferables[i]] -= num2;
                     }
                 }
             }
         }
     }
     tmpLeftToLoadCopy.Clear();
     if (transferables.Any())
     {
         TransferableOneWay transferableOneWay2 = transferables.MaxBy((TransferableOneWay x) => tmpLeftCountToTransfer[x]);
         int num3 = 0;
         for (int m = 0; m < transferables.Count; m++)
         {
             if (transferables[m] != transferableOneWay2 && tmpLeftCountToTransfer[transferables[m]] > 0)
             {
                 transporters[num3 % transporters.Count].AddToTheToLoadList(transferables[m], tmpLeftCountToTransfer[transferables[m]]);
                 num3++;
             }
         }
         if (num3 < transporters.Count)
         {
             int num4 = tmpLeftCountToTransfer[transferableOneWay2];
             int num5 = num4 / (transporters.Count - num3);
             for (int n = num3; n < transporters.Count; n++)
             {
                 int num6 = (n == transporters.Count - 1) ? num4 : num5;
                 if (num6 > 0)
                 {
                     transporters[n].AddToTheToLoadList(transferableOneWay2, num6);
                 }
                 num4 -= num6;
             }
         }
         else
         {
             transporters[num3 % transporters.Count].AddToTheToLoadList(transferableOneWay2, tmpLeftCountToTransfer[transferableOneWay2]);
         }
     }
     tmpLeftCountToTransfer.Clear();
     for (int num7 = 0; num7 < transporters.Count; num7++)
     {
         for (int num8 = 0; num8 < transporters[num7].innerContainer.Count; num8++)
         {
             Thing thing2 = transporters[num7].innerContainer[num8];
             int   num9   = transporters[num7].SubtractFromToLoadList(thing2, thing2.stackCount, sendMessageOnFinished: false);
             if (num9 < thing2.stackCount)
             {
                 transporters[num7].innerContainer.TryDrop(thing2, ThingPlaceMode.Near, thing2.stackCount - num9, out Thing _);
             }
         }
     }
 }