]> git.sesse.net Git - stockfish/blobdiff - src/position.cpp
Retire PieceValueXXX[] getters
[stockfish] / src / position.cpp
index 8c9906e2f6b65e817002d84ec8a8364398467e88..9d7679ab0979e1daee7f38528d6b5bdb23d318e9 100644 (file)
@@ -618,6 +618,9 @@ bool Position::is_pseudo_legal(const Move m) const {
   else if (!bit_is_set(attacks_from(pc, from), to))
       return false;
 
+  // Evasions generator already takes care to avoid some kind of illegal moves
+  // and pl_move_is_legal() relies on this. So we have to take care that the
+  // same kind of moves are filtered out here.
   if (in_check())
   {
       // In case of king moves under check we have to remove king so to catch
@@ -685,20 +688,7 @@ bool Position::move_gives_check(Move m, const CheckInfo& ci) const {
   if (is_promotion(m))
   {
       clear_bit(&b, from);
-
-      switch (promotion_piece_type(m))
-      {
-      case KNIGHT:
-          return bit_is_set(attacks_from<KNIGHT>(to), ksq);
-      case BISHOP:
-          return bit_is_set(bishop_attacks_bb(to, b), ksq);
-      case ROOK:
-          return bit_is_set(rook_attacks_bb(to, b), ksq);
-      case QUEEN:
-          return bit_is_set(queen_attacks_bb(to, b), ksq);
-      default:
-          assert(false);
-      }
+      return bit_is_set(attacks_from(Piece(promotion_piece_type(m)), to, b), ksq);
   }
 
   // En passant capture with check ? We have already handled the case
@@ -1361,7 +1351,7 @@ int Position::see_sign(Move m) const {
   // Early return if SEE cannot be negative because captured piece value
   // is not less then capturing one. Note that king moves always return
   // here because king midgame value is set to 0.
-  if (piece_value_midgame(piece_on(to)) >= piece_value_midgame(piece_on(from)))
+  if (PieceValueMidgame[piece_on(to)] >= PieceValueMidgame[piece_on(from)])
       return 1;
 
   return see(m);
@@ -1568,7 +1558,7 @@ Key Position::compute_material_key() const {
 
   for (Color c = WHITE; c <= BLACK; c++)
       for (PieceType pt = PAWN; pt <= QUEEN; pt++)
-          for (int i = 0, cnt = piece_count(c, pt); i < cnt; i++)
+          for (int i = 0; i < piece_count(c, pt); i++)
               result ^= zobrist[c][pt][i];
 
   return result;
@@ -1692,7 +1682,7 @@ void Position::init() {
 
   for (Piece p = WP; p <= WK; p++)
   {
-      Score ps = make_score(piece_value_midgame(p), piece_value_endgame(p));
+      Score ps = make_score(PieceValueMidgame[p], PieceValueEndgame[p]);
 
       for (Square s = SQ_A1; s <= SQ_H8; s++)
       {