import "package:meta/meta.dart"; @immutable class Piece { // Private constructor to prevent instantiation. Piece._(); static const emptySquare = 0; static const whiteKing = 1; static const whiteQueen = 2; static const whiteRook = 3; static const whiteBishop = 4; static const whiteKnight = 5; static const whitePawn = 6; static const blackKing = 7; static const blackQueen = 8; static const blackRook = 9; static const blackBishop = 10; static const blackKnight = 11; static const blackPawn = 12; static const Map pieceByFenCharacter = { "k": blackKing, "q": blackQueen, "r": blackRook, "b": blackBishop, "n": blackKnight, "p": blackPawn, "K": whiteKing, "Q": whiteQueen, "R": whiteRook, "B": whiteBishop, "N": whiteKnight, "P": whitePawn, }; static const Map fenCharacterByPiece = { Piece.emptySquare: " ", Piece.blackKing : "k", Piece.blackQueen : "q", Piece.blackRook : "r", Piece.blackBishop: "b", Piece.blackKnight: "n", Piece.blackPawn : "p", Piece.whiteKing : "K", Piece.whiteQueen : "Q", Piece.whiteRook : "R", Piece.whiteBishop: "B", Piece.whiteKnight: "N", Piece.whitePawn : "P", }; static bool isWhite(int piece) => piece >= whiteKing && piece <= whitePawn; static bool isBlack(int piece) => piece >= blackKing && piece <= blackPawn; }