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 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); }
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); }
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); } }
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); } }
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); }
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); } }
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); } } }
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); }
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 _); } } } }