aboutsummaryrefslogtreecommitdiff
path: root/src/fen.cpp
diff options
context:
space:
mode:
authorAdam <adammegarules1@gmail.com>2026-07-29 16:18:52 +0200
committerAdam <adammegarules1@gmail.com>2026-07-29 16:18:52 +0200
commit1d6a6717ba088c3b89d50021f2bf6656eb564533 (patch)
tree83c2ba1c3a89eacf63f8841ccfb93671c5b45bdf /src/fen.cpp
parent42c1050af70447e935ad1914e57ccecd9f278e7f (diff)
implementing castling
Diffstat (limited to 'src/fen.cpp')
-rw-r--r--src/fen.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/fen.cpp b/src/fen.cpp
index 7597143..4b8686e 100644
--- a/src/fen.cpp
+++ b/src/fen.cpp
@@ -13,8 +13,6 @@ void setBoardFen(std::string fen, Game *b) {
int file = 0;
int rank = 0;
- std::string castle = "";
-
enum parserState {
POSITION,
TURN,
@@ -53,15 +51,26 @@ void setBoardFen(std::string fen, Game *b) {
}
if (state == CASTLE) {
if (fen[i] == '-') {
- castle = "-";
+ b->blackCastleKing = false;
+ b->blackCastleQueen = false;
+ b->whiteCastleKing = false;
+ b->whiteCastleQueen = false;
continue;
}
- if (toupper(fen[i]) == 'K') {
- castle += fen[i];
+ if (fen[i] == 'K') {
+ b->whiteCastleKing = true;
continue;
}
- if (toupper(fen[i]) == 'Q') {
- castle += fen[i];
+ if (fen[i] == 'Q') {
+ b->whiteCastleQueen = true;
+ continue;
+ }
+ if (fen[i] == 'k') {
+ b->blackCastleKing = true;
+ continue;
+ }
+ if (fen[i] == 'q') {
+ b->blackCastleQueen = true;
continue;
}
}
@@ -135,5 +144,4 @@ void setBoardFen(std::string fen, Game *b) {
}
break;
}
- b->castle = castle.empty() ? "-" : castle;
}