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