Пример #1
0
 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);
 }
Пример #2
0
    /// <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);
    }
Пример #3
0
    /// <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);
        }
    }
Пример #4
0
 /// <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);
 }
Пример #5
0
 public void TakeAll()
 {
     Vacate();
     OnSlotStateChanged?.Invoke(this);
 }