private void AddItemsToTransferables() { foreach (Thing item in TransporterUtility.AllSendableItems_NewTmp(transporters, map, autoLoot)) { AddToTransferables(item); } }
private void CheckAutoload() { if (!autoload || !LoadingInProgressOrReadyToLaunch || !parent.Spawned) { return; } tmpRequiredItems.Clear(); tmpRequiredItems.AddRange(requiredItems); tmpRequiredPawns.Clear(); tmpRequiredPawns.AddRange(requiredPawns); ThingOwner innerContainer = Transporter.innerContainer; for (int i = 0; i < innerContainer.Count; i++) { Pawn pawn = innerContainer[i] as Pawn; if (pawn != null) { tmpRequiredPawns.Remove(pawn); continue; } int num = innerContainer[i].stackCount; for (int j = 0; j < tmpRequiredItems.Count; j++) { if (tmpRequiredItems[j].ThingDef == innerContainer[i].def) { int num2 = Mathf.Min(tmpRequiredItems[j].Count, num); if (num2 > 0) { tmpRequiredItems[j] = tmpRequiredItems[j].WithCount(tmpRequiredItems[j].Count - num2); num -= num2; } } } } for (int num3 = tmpRequiredItems.Count - 1; num3 >= 0; num3--) { if (tmpRequiredItems[num3].Count <= 0) { tmpRequiredItems.RemoveAt(num3); } } if (tmpRequiredItems.Any() || tmpRequiredPawns.Any()) { if (Transporter.leftToLoad != null) { Transporter.leftToLoad.Clear(); } tmpAllSendablePawns.Clear(); tmpAllSendablePawns.AddRange(TransporterUtility.AllSendablePawns_NewTmp(TransportersInGroup, parent.Map, autoLoot: false)); tmpAllSendableItems.Clear(); tmpAllSendableItems.AddRange(TransporterUtility.AllSendableItems_NewTmp(TransportersInGroup, parent.Map, autoLoot: false)); tmpAllSendableItems.AddRange(TransporterUtility.ThingsBeingHauledTo(TransportersInGroup, parent.Map)); tmpRequiredPawnsPossibleToSend.Clear(); for (int k = 0; k < tmpRequiredPawns.Count; k++) { if (tmpAllSendablePawns.Contains(tmpRequiredPawns[k])) { TransferableOneWay transferableOneWay = new TransferableOneWay(); transferableOneWay.things.Add(tmpRequiredPawns[k]); Transporter.AddToTheToLoadList(transferableOneWay, 1); tmpRequiredPawnsPossibleToSend.Add(tmpRequiredPawns[k]); } } for (int l = 0; l < tmpRequiredItems.Count; l++) { if (tmpRequiredItems[l].Count <= 0) { continue; } int num4 = 0; for (int m = 0; m < tmpAllSendableItems.Count; m++) { if (tmpAllSendableItems[m].def == tmpRequiredItems[l].ThingDef) { num4 += tmpAllSendableItems[m].stackCount; } } if (num4 <= 0) { continue; } TransferableOneWay transferableOneWay2 = new TransferableOneWay(); for (int n = 0; n < tmpAllSendableItems.Count; n++) { if (tmpAllSendableItems[n].def == tmpRequiredItems[l].ThingDef) { transferableOneWay2.things.Add(tmpAllSendableItems[n]); } } int count = Mathf.Min(tmpRequiredItems[l].Count, num4); Transporter.AddToTheToLoadList(transferableOneWay2, count); } TransporterUtility.MakeLordsAsAppropriate(tmpRequiredPawnsPossibleToSend, TransportersInGroup, parent.Map); tmpAllSendablePawns.Clear(); tmpAllSendableItems.Clear(); tmpRequiredItems.Clear(); tmpRequiredPawns.Clear(); tmpRequiredPawnsPossibleToSend.Clear(); } else { if (Transporter.leftToLoad != null) { Transporter.leftToLoad.Clear(); } TransporterUtility.MakeLordsAsAppropriate(tmpRequiredPawnsPossibleToSend, TransportersInGroup, parent.Map); } }