package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Player;

public class Inventor extends Character {
    private int icon;

    /**
     * Returns the icon value of this Inventor card.
     *
     * @return the icon value of this Inventor card.
     */
    public int Icon() {
        return icon;
    }

    /**
     * Creates an Inventor character card with the specified era and icon value.
     *
     * @param Era the era of the Inventor card.
     * @param icon the icon value of the Inventor card.
     * @throws IllegalArgumentException if {@code icon < 0} or {@code icon > 9}.
     */
    public Inventor(int Era,int icon) throws IllegalArgumentException {
        super(Era, CharacterType.INVENTOR);
        if(icon<0 || icon>9)
            throw new IllegalArgumentException();
        this.icon = icon;
    }

    /**
     * Creates an Inventor character card with the specified era, icon value,
     * and minimum number of players.
     *
     * @param Era the era of the Inventor card.
     * @param icon the icon value of the Inventor card.
     * @param nMin the minimum number of players required for the card.
     * @throws IllegalArgumentException if {@code icon < 0} or {@code icon > 9}.
     */
    public Inventor(int Era,int icon,int nMin) throws IllegalArgumentException {
        super(Era, CharacterType.INVENTOR,nMin);
        if(icon<0 || icon>9)
            throw new IllegalArgumentException();
        this.icon = icon;
    }

    /**
     * Returns the string representation of this Inventor card.
     *
     * @return the string representation of this Inventor card.
     */
    @Override
    public String toString() {
        return  super.toString() + " Symbol:" + String.valueOf(icon);
    }

    /**
     * Creates and returns a copy of this Inventor card.
     *
     * @return a clone of this Inventor card.
     */
    @Override
    public Character clone()  {
        return new Inventor(getEra(),icon, getNMin());
    }

    /**
     * Inserts this Inventor card into the specified player's Inventor collection.
     *
     * @param player the player who receives the card.
     */
    @Override
    public void insert(Player player) {
        player.inventors.add(this);
    }
}
