package com.christophdietze.jack.shared.board;
public enum Piece {
EMPTY(" ", true, null), WHITE_KING("K", true, PieceType.KING), BLACK_KING("k", false, PieceType.KING), WHITE_QUEEN(
"Q", true, PieceType.QUEEN), BLACK_QUEEN("q", false, PieceType.QUEEN), WHITE_ROOK("R", true, PieceType.ROOK), BLACK_ROOK(
"r", false, PieceType.ROOK), WHITE_BISHOP("B", true, PieceType.BISHOP), BLACK_BISHOP("b", false,
PieceType.BISHOP), WHITE_KNIGHT("N", true, PieceType.KNIGHT), BLACK_KNIGHT("n", false, PieceType.KNIGHT), WHITE_PAWN(
"P", true, PieceType.PAWN), BLACK_PAWN("p", false, PieceType.PAWN), WHITE_EN_PASSANT_PAWN("E", true, null), BLACK_EN_PASSANT_PAWN(
"e", false, null);
private final PieceType pieceType;
private final boolean isWhite;
private final String symbol;
private Piece(String symbol, boolean isWhite, PieceType pieceType) {
this.symbol = symbol;
this.isWhite = isWhite;
this.pieceType = pieceType;
}
public String getSymbol() {
return symbol;
}
public boolean isWhite() {
return isWhite;
}
public PieceType getPieceType() {
return pieceType;
}
public boolean isPiece() {
return pieceType != null;
}
public boolean isEmpty() {
return pieceType == null;
}
public static Piece getFromColorAndPieceType(boolean isWhite, PieceType pieceType) {
if (pieceType == null) {
return EMPTY;
}
for (Piece s : values()) {
if (s.pieceType == pieceType && s.isWhite() == isWhite) {
return s;
}
}
return null;
}
}