private void OnStackSplitted(ISlot slot) { ISlot emptySlot = slots.Find(s => s.IsEmpty); if (emptySlot != null) { int itemsToMoveNum = slot.SlotCount - slot.SlotCount / 2; slot.RemoveStackPortion(itemsToMoveNum); emptySlot.AddAll(slot.StoredItem, itemsToMoveNum); } }
private void MergeSlots(ISlot fromSlot, ISlot toSlot) { if (toSlot.SpaceLeft(toSlot.StoredItem) == 0) { return; } int toSlotSpaceLeft = toSlot.SpaceLeft(toSlot.StoredItem); int canMergeNum = (toSlotSpaceLeft >= fromSlot.SlotCount) ? fromSlot.SlotCount : toSlotSpaceLeft; fromSlot.RemoveStackPortion(canMergeNum); toSlot.AddStackPortion(toSlot.StoredItem, canMergeNum); }