import javax.imageio.ImageIO;
import java.awt.*;
import java.io.File;
/**
 * Piece is an abstract class that all pieces extend from and here we match pics to pieces too.
 *@author kimiadorani
 *@version 1.0
 *@since 2019-5-7
 */
public abstract class Piece {


    private Cell cell ;
    private PieceColor pieceColor;
    private boolean deleted ;

    public Piece (Cell cell, PieceColor pieceColor) {
        this.cell = cell ;
        this.cell.setEmpty(false) ;
        this.pieceColor = pieceColor;
        this.deleted = false ;
    }

    public abstract boolean isValidMove(Cell c, Cell board[][], Piece pw[], Piece pb[]) ;

    public Cell getCell() {
        return cell;
    }
    public Image getPieceImage(){
        Image image = null;
        try {
            if (this instanceof Bishop) {
                if (getPieceColor().equals(PieceColor.WHITE)) {
                    image = ImageIO.read(new File("./pics/White-Bishop.png"));
                } else {
                    image = ImageIO.read(new File("./pics/Black-Bishop.png"));
                }
            } else if (this instanceof King) {
                if (getPieceColor().equals(PieceColor.WHITE)) {
                    image = ImageIO.read(new File("./pics/White-King.png"));

                } else {
                    image = ImageIO.read(new File("./pics/Black-King.png"));

                }
            } else if (this instanceof Knight) {
                if (getPieceColor().equals(PieceColor.WHITE)) {
                    image = ImageIO.read(new File("./pics/White-Knight.png"));
                } else {
                    image = ImageIO.read(new File("./pics/Black-Knight.png"));

                }
            } else if (this instanceof Pawn) {
                if (getPieceColor().equals(PieceColor.WHITE)) {
                    image = ImageIO.read(new File("./pics/White-Pawn.png"));

                } else {
                    image = ImageIO.read(new File("./pics/Black-Pawn.png"));

                }
            } else if (this instanceof Queen) {
                if (getPieceColor().equals(PieceColor.WHITE)) {
                    image = ImageIO.read(new File("./pics/White-Queen.png"));

                } else {
                    image = ImageIO.read(new File("./pics/Black-Queen.png"));

                }
            } else if (this instanceof Rook) {
                if (getPieceColor().equals(PieceColor.WHITE)) {
                    image = ImageIO.read(new File("./pics/White-Rook.png"));

                } else {
                    image = ImageIO.read(new File("./pics/Black-Rook.png"));

                }
            }
        }catch (Exception exception){

        }
        return image;
    }
    public PieceColor getPieceColor() {
        return pieceColor;
    }

    /**
     * check that if the piece is deleted or not
     * @return deleted if it was true
     */
    public boolean isDeleted() {
        return deleted;
    }

    public void setCell(Cell cell) {
        this.cell = cell;
    }

    public void setPieceColor(PieceColor pieceColor) {
        this.pieceColor = pieceColor;
    }

    public void setDeleted(boolean deleted) {
        this.deleted = deleted;
    }

}