diff options
Diffstat (limited to 'src/fen.cpp')
| -rw-r--r-- | src/fen.cpp | 24 |
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; } |
