toFEN method
Implementation
String toFEN() {
StringBuffer fenBuffer = StringBuffer();
// Piece placement
for (int row = 0; row < 8; row++) {
int emptyCount = 0;
for (int col = 0; col < 8; col++) {
ChessPiece? piece = board[row][col];
if (piece == null) {
emptyCount++;
} else {
if (emptyCount > 0) {
fenBuffer.write(emptyCount);
emptyCount = 0;
}
fenBuffer.write(ChessBoardInterface.getPieceChar(piece));
}
}
if (emptyCount > 0) fenBuffer.write(emptyCount);
if (row < 7) fenBuffer.write("/");
}
// Active color (turn)
fenBuffer.write(" ");
fenBuffer.write(turn == PieceColor.white ? "w" : "b");
// Castling availability
fenBuffer.write(" ");
fenBuffer.write(getCastlingRights());
// En passant target square (using "-" as default, modify if you have one)
fenBuffer.write(" ");
fenBuffer.write(
enPassantTarget != null
? "${String.fromCharCode('a'.codeUnitAt(0) + enPassantTarget!.col)}${8 - enPassantTarget!.row}"
: "-",
);
// Halfmove clock and fullmove number (defaults here)
fenBuffer.write(" ");
fenBuffer.write(halfMoveClock);
fenBuffer.write(" ");
fenBuffer.write(fullMoveNumber);
return fenBuffer.toString();
}