package arn

import "errors"

// InventorySlot ...
type InventorySlot struct {
	ItemID   string `json:"itemId"`
	Quantity uint   `json:"quantity"`
}

// IsEmpty ...
func (slot *InventorySlot) IsEmpty() bool {
	return slot.ItemID == ""
}

// Item ...
func (slot *InventorySlot) Item() *ShopItem {
	if slot.ItemID == "" {
		return nil
	}

	item, _ := GetShopItem(slot.ItemID)
	return item
}

// Decrease reduces the quantity by the given number.
func (slot *InventorySlot) Decrease(count uint) error {
	if slot.Quantity < count {
		return errors.New("Not enough items")
	}

	slot.Quantity -= count

	if slot.Quantity == 0 {
		slot.ItemID = ""
	}

	return nil
}

// Increase increases the quantity by the given number.
func (slot *InventorySlot) Increase(count uint) {
	slot.Quantity += count
}