public void Swap(ItemSlotData slot) { if (!slot) { return; } (item, slot.item) = (slot.item, item); amount += slot.amount; slot.amount = amount - slot.amount; amount -= slot.amount; OnSlotStateChanged?.Invoke(this); slot.OnSlotStateChanged?.Invoke(slot); OnSlotSwap?.Invoke(this, slot); }
/// <summary> /// 取走 /// </summary> /// <param name="amount">取走数量</param> /// <returns>实际取走数量</returns> public int Take(int amount = 1) { if (IsEmpty || amount <= 0) { return(0); } int left = this.amount - amount; this.amount = left; if (this.amount <= 0) { this.amount = 0; item = null; } OnSlotStateChanged?.Invoke(this); return(left < 0 ? amount + left : amount); }
/// <summary> /// 放入道具 /// </summary> /// <param name="amount">放入数量</param> /// <returns>实际放入数量</returns> public int Put(int amount = 1) { if (!item) { return(0); } int left = item.Model_old.StackNum - this.amount; if (left >= amount) { this.amount += amount; OnSlotStateChanged?.Invoke(this); return(amount); } else { this.amount += left; OnSlotStateChanged?.Invoke(this); return(left); } }
/// <summary> /// 替换道具 /// </summary> /// <param name="item">目标道具</param> /// <param name="amount">放入数量</param> public void Put(ItemData item, int amount = 1) { this.item = item; this.amount = amount; OnSlotStateChanged?.Invoke(this); }
public void TakeAll() { Vacate(); OnSlotStateChanged?.Invoke(this); }