package org.ntlab.radishforandroidstudio.cactusClient.models;

import net.arnx.jsonic.JSONHint;

public class Item extends Entity {
    private String name;
    private int amount;

    @JSONHint(ignore = true)
    public static final int UNIQUE_ID_LENGTH = 12;

    private Item() {
        // JSONDecode時の呼び出し用
    }

    public Item(String name, int amount) {
        setName(name);
        setAmount(amount);
    }

    public String getName() {
        return name;
    }

    public int getAmount() {
        return amount;
    }

    public boolean isEmpty() {
        return (amount == 0);
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAmount(int amount) {
        this.amount = amount;
    }

    public Item changeAmount(int amountOfChange) {
        amount = Math.max(amount + amountOfChange, 0);
        return this;
    }

    @Override
    public int hashCode() {
        int result = 17;
        result = result * 31 + name.hashCode();
        return result;
    }

    @Override
    public boolean equals(java.lang.Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj instanceof Item) {
            Item item = (Item) obj;
            if (this.name.equals(item.name)) {
                return true; // 同名のアイテムは等価
            }
        }
        return false;
    }
}