diff options
Diffstat (limited to 'src/board')
| -rw-r--r-- | src/board/board.cpp | 3 | ||||
| -rw-r--r-- | src/board/board.hpp | 1 | ||||
| -rw-r--r-- | src/board/fen.cpp | 23 |
3 files changed, 14 insertions, 13 deletions
diff --git a/src/board/board.cpp b/src/board/board.cpp index cb9254e..8c8e423 100644 --- a/src/board/board.cpp +++ b/src/board/board.cpp @@ -263,3 +263,6 @@ void UpdateBitboards(Game *g) { g->PieceBitboard |= (1ULL << i); } } +void SetPiece(int i, PieceType type, bool color, Game *g) { + g->pieces[i] = {.color = color, .type = type}; +} diff --git a/src/board/board.hpp b/src/board/board.hpp index 91a38f9..7a9779a 100644 --- a/src/board/board.hpp +++ b/src/board/board.hpp @@ -104,4 +104,5 @@ void UnMakeMove(UndoMove undo, Game *g); Position FindKing(Game *g, bool white); void UpdateBitboards(Game *g); +void SetPiece(int i, PieceType type, bool color, Game *g); #endif /* SRC_BOARD_H_ */ diff --git a/src/board/fen.cpp b/src/board/fen.cpp index 91a2533..ca64e47 100644 --- a/src/board/fen.cpp +++ b/src/board/fen.cpp @@ -1,5 +1,6 @@ #include "fen.hpp" #include "board.hpp" +#include <cassert> #include <cctype> #include <cstdlib> #include <print> @@ -90,8 +91,9 @@ void setBoardFen(std::string fen, Game *g) { file += move; if (file > 8) { std::println("Fatal: file was to big"); + assert(false && "Malformed file"); exit(1); - return; // malformed rank + return; // malformed file } continue; } @@ -100,44 +102,39 @@ void setBoardFen(std::string fen, Game *g) { rank++; if (rank >= 8) { std::println("Fatal: rank was to big"); + assert(false && "Malformed rank"); exit(1); return; // malformed rank } continue; }; if (toupper(fen[i]) == 'N') { - Piece piece = createPiece(KNIGHT, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, KNIGHT, isupper(fen[i]), g); file++; continue; }; if (toupper(fen[i]) == 'R') { - Piece piece = createPiece(ROOK, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, ROOK, isupper(fen[i]), g); file++; continue; } if (toupper(fen[i]) == 'Q') { - Piece piece = createPiece(QUEEN, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, QUEEN, isupper(fen[i]), g); file++; continue; } if (toupper(fen[i]) == 'B') { - Piece piece = createPiece(BISHOP, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, BISHOP, isupper(fen[i]), g); file++; continue; } if (toupper(fen[i]) == 'P') { - Piece piece = createPiece(PAWN, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, PAWN, isupper(fen[i]), g); file++; continue; } if (toupper(fen[i]) == 'K') { - Piece piece = createPiece(KING, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, KING, isupper(fen[i]), g); file++; continue; } |
