package frame;

/**
 *
 * @author Ani
 */

/**
 *
 * A játékos tulajdonságait leíró osztály.
 */
public class Player {
    /**
     * Az 'A' játékosnak megfelelő karakter.
     */
    public static final Character A = 'A';
    /**
     * Az 'B' játékosnak megfelelő karakter.
     */
    public static final Character B = 'B';

    private Character player;

    /**
     * Létrehoz egy játékos a megadott karakter alapján.
     *
     * @param player ha nem az A vagy B értéket kapja, NoSuchPlayerExceptiont dob.
     * 
     */
    public Player(Character player) throws NoSuchPlayerException{
        if (player!=A && player!=B){
            throw new NoSuchPlayerException("Nincs ilyen játékos!");
        }
        this.player = player;
    }

    /**
     * Megadja, hogy ki az aktuális játékos.
     * @return
     * Visszatér az aktuális játékosnak megfelelő karakterrel.
     */
    public Character getPlayer() {
        return player;
    }

    /**
     * Vált a következő játékosra.
     */
    public void changePlayer(){
        player = player.equals(A) ? B : A;
    }

    /**
     * Megnézi, hogy a káz játékos megegyezik-e.
     * @param obj egy objektum
     * @return
     * Ha a két játékos megegyezik igazat, különben hamisat ad vissza.
     */
    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Player)){
            return false;
        }

        Player p = (Player) obj;
        return p.player == this.player;
    }

    /**
     *
     * @return
     * Megadja, hogy a játékosnak milyen azonosító szám felel meg.
     * A játékos esetén 1-es.
     * B játékos esetén 2-es.
     */
    public Integer getPlayerAsInteger(){
        return 'A' == player ? 1 : 2;
    }

    /**
     *
     * @return
     * Visszaadja a játékos tulajdonságait Stringként.
     */
    @Override
    public String toString() {
        return "Player: " + player;
    }



}
