From: Steinar H. Gunderson Date: Sun, 15 Jun 2014 17:09:46 +0000 (+0200) Subject: When parsing moves, use illegal moves to disambiguate. X-Git-Url: https://git.sesse.net/?p=remoteglot;a=commitdiff_plain;h=11d3528406bfcbb3f97780d4b2af571c0b3f6299 When parsing moves, use illegal moves to disambiguate. --- diff --git a/Board.pm b/Board.pm index b925a38..1838f7d 100644 --- a/Board.pm +++ b/Board.pm @@ -194,6 +194,14 @@ sub parse_pretty_move { next if (defined($from_col) && $from_col != $col); next if ($board->[$row][$col] ne $piece); next if (!$board->can_reach($piece, $row, $col, $to_row, $to_col)); + + # See if doing this move would put us in check + # (yes, there are clients that expect us to do this). + my $check = $board->make_move($row, $col, $to_row, $to_col, $promo)->in_check(); + next if ($check eq 'both' || + ($toplay eq 'W' && $check eq 'white') || + ($toplay eq 'B' && $check eq 'black')); + push @squares, [ $row, $col ]; } }