aboutsummaryrefslogtreecommitdiff
path: root/src/moves.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/moves.cpp')
-rw-r--r--src/moves.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/moves.cpp b/src/moves.cpp
index 5401e8b..d7df595 100644
--- a/src/moves.cpp
+++ b/src/moves.cpp
@@ -123,6 +123,36 @@ std::vector<Move> GetPseudoLegalMoves(Game *b) {
return moves;
}
+bool IsSquareAttacked(Game *board, Position square, bool white) {
+ Game temp = *board;
+
+ // Generate moves for the attacking side
+ temp.turn = white;
+
+ auto moves = GetPseudoLegalMoves(&temp);
+
+ for (const Move &move : moves) {
+ if (move.To == square)
+ return true;
+ }
+
+ return false;
+}
+bool IsPieceTypeAttacked(Game *board, PieceType type, bool white) {
+ Game temp = *board;
+
+ // Generate moves for the attacking side
+ temp.turn = white;
+
+ auto moves = GetPseudoLegalMoves(&temp);
+
+ for (const Move &move : moves) {
+ if (temp.pieces[PositionToIndex(move.To)].type == type)
+ return true;
+ }
+
+ return false;
+}
std::vector<Move> GetLegalMoves(Game *b) {
std::vector<Move> moves = GetPseudoLegalMoves(b);
std::vector<Move> legalMove;