public void TryAddRangeOrTransfer(IEnumerable <T> things, bool canMergeWithExistingStacks = true, bool destroyLeftover = false) { if (things == this) { return; } ThingOwner thingOwner = things as ThingOwner; if (thingOwner != null) { thingOwner.TryTransferAllToContainer(this, canMergeWithExistingStacks); if (destroyLeftover) { thingOwner.ClearAndDestroyContents(DestroyMode.Vanish); } } else { IList <T> list = things as IList <T>; if (list != null) { for (int i = 0; i < list.Count; i++) { if (!base.TryAddOrTransfer(list[i], canMergeWithExistingStacks) && destroyLeftover) { T t = list[i]; t.Destroy(DestroyMode.Vanish); } } } else { foreach (T t2 in things) { if (!base.TryAddOrTransfer(t2, canMergeWithExistingStacks) && destroyLeftover) { t2.Destroy(DestroyMode.Vanish); } } } } }
public void TryAddRangeOrTransfer(IEnumerable <T> things, bool canMergeWithExistingStacks = true, bool destroyLeftover = false) { if (things != this) { ThingOwner thingOwner = things as ThingOwner; if (thingOwner != null) { thingOwner.TryTransferAllToContainer(this, canMergeWithExistingStacks); if (destroyLeftover) { thingOwner.ClearAndDestroyContents(); } } else { IList <T> list = things as IList <T>; if (list != null) { for (int i = 0; i < list.Count; i++) { if (!TryAddOrTransfer(list[i], canMergeWithExistingStacks) && destroyLeftover) { T val = list[i]; val.Destroy(); } } } else { foreach (T thing in things) { T current = thing; if (!TryAddOrTransfer(current, canMergeWithExistingStacks) && destroyLeftover) { current.Destroy(); } } } } } }
public void TryAddRangeOrTransfer(IEnumerable <T> things, bool canMergeWithExistingStacks = true, bool destroyLeftover = false) { if (things == this) { return; } ThingOwner thingOwner = things as ThingOwner; if (thingOwner != null) { thingOwner.TryTransferAllToContainer(this, canMergeWithExistingStacks); if (destroyLeftover) { thingOwner.ClearAndDestroyContents(); } return; } IList <T> list = things as IList <T>; if (list != null) { for (int i = 0; i < list.Count; i++) { if (!TryAddOrTransfer(list[i], canMergeWithExistingStacks) && destroyLeftover) { list[i].Destroy(); } } return; } foreach (T thing in things) { if (!TryAddOrTransfer(thing, canMergeWithExistingStacks) && destroyLeftover) { thing.Destroy(); } } }
public void DestroyCarriedThing() { innerContainer.ClearAndDestroyContents(); }
public void DestroyAll(DestroyMode mode = DestroyMode.Vanish) { innerContainer.ClearAndDestroyContents(mode); }