public int Consume(int amount) { if (Amount <= 0) { Amount = 0; return(0); } Item oldItem = Item; int oldAmount = Amount; int consumed = Mathf.Min(Amount, amount); Amount -= consumed; if (Amount <= 0) { Item = null; if (oldItem != null) { OnSlotItemChanged?.Invoke(Index, oldItem); } Amount = 0; } OnSlotAmountChanged?.Invoke(Index, oldAmount); OnSlotChanged?.Invoke(Index); return(consumed); }
public void SetItemAmount(Item item, int amount) { Item oldItem = Item; int oldAmount = Amount; Item = item; Amount = amount; OnSlotChanged?.Invoke(Index); OnSlotItemChanged?.Invoke(Index, oldItem); OnSlotAmountChanged?.Invoke(Index, oldAmount); }
public void SetAmount(int amount) { Item oldItem = Item; int oldAmount = Amount; Amount = Mathf.Max(amount, 0); if (Amount == 0) { Item = null; OnSlotItemChanged?.Invoke(Index, oldItem); } Amount = amount; OnSlotChanged?.Invoke(Index); OnSlotAmountChanged?.Invoke(Index, oldAmount); }
public int AddAmount(int amount) { int oldAmount = Amount; int maxAdd = 0; if (Item.stackable) { maxAdd = 64 - Amount; Amount += Mathf.Min(maxAdd, amount); } else if (Amount <= 0) { Amount = 1; maxAdd = 1; } OnSlotChanged?.Invoke(Index); OnSlotAmountChanged?.Invoke(Index, oldAmount); return(Mathf.Min(maxAdd, amount)); }