X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmove.cpp;h=d079ee7b56f840b4aaebe61c48066446eb49fe34;hp=4a9705446454d78298db32fec024985bb234f11b;hb=87f7e99bc4ddeee7ca6b098d73620e2de2b1287e;hpb=2e2a4b4ea33fc0758067c5a83b9e6157fdf5d9a7 diff --git a/src/move.cpp b/src/move.cpp index 4a970544..d079ee7b 100644 --- a/src/move.cpp +++ b/src/move.cpp @@ -21,7 +21,6 @@ #include #include -#include "move.h" #include "movegen.h" #include "position.h" @@ -44,10 +43,10 @@ const string move_to_uci(Move m, bool chess960) { if (m == MOVE_NULL) return "0000"; - if (move_is_castle(m) && !chess960) - to = from + (square_file(to) == FILE_H ? Square(2) : -Square(2)); + if (is_castle(m) && !chess960) + to = from + (file_of(to) == FILE_H ? Square(2) : -Square(2)); - if (move_is_promotion(m)) + if (is_promotion(m)) promotion = char(tolower(piece_type_to_char(promotion_piece_type(m)))); return square_to_string(from) + square_to_string(to) + promotion; @@ -80,16 +79,16 @@ const string move_to_san(Position& pos, Move m) { if (m == MOVE_NULL) return "(null)"; - assert(move_is_ok(m)); + assert(is_ok(m)); Bitboard attackers; bool ambiguousMove, ambiguousFile, ambiguousRank; Square sq, from = move_from(m); Square to = move_to(m); - PieceType pt = piece_type(pos.piece_on(from)); + PieceType pt = type_of(pos.piece_on(from)); string san; - if (move_is_castle(m)) + if (is_castle(m)) san = (move_to(m) < move_from(m) ? "O-O-O" : "O-O"); else { @@ -107,10 +106,14 @@ const string move_to_san(Position& pos, Move m) { { sq = pop_1st_bit(&attackers); - if (square_file(sq) == square_file(from)) + // Pinned pieces are not included in the possible sub-set + if (!pos.pl_move_is_legal(make_move(sq, to), pos.pinned_pieces())) + continue; + + if (file_of(sq) == file_of(from)) ambiguousFile = true; - if (square_rank(sq) == square_rank(from)) + if (rank_of(sq) == rank_of(from)) ambiguousRank = true; ambiguousMove = true; @@ -119,25 +122,25 @@ const string move_to_san(Position& pos, Move m) { if (ambiguousMove) { if (!ambiguousFile) - san += file_to_char(square_file(from)); + san += file_to_char(file_of(from)); else if (!ambiguousRank) - san += rank_to_char(square_rank(from)); + san += rank_to_char(rank_of(from)); else san += square_to_string(from); } } - if (pos.move_is_capture(m)) + if (pos.is_capture(m)) { if (pt == PAWN) - san += file_to_char(square_file(from)); + san += file_to_char(file_of(from)); san += 'x'; } san += square_to_string(to); - if (move_is_promotion(m)) + if (is_promotion(m)) { san += '='; san += piece_type_to_char(promotion_piece_type(m));