From 6e3319a9752514ca6351b0175e31ef7a2e4ad84b Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Tue, 11 Nov 2014 10:10:56 +0100 Subject: [PATCH] Fix handling of en passant; reported by Phil Miller. --- www/js/remoteglot.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index a5cdc23..d63b378 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -762,15 +762,28 @@ var update_displayed_line = function() { hiddenboard.position(current_display_line.start_fen, false); for (var i = 0; i <= current_display_move; ++i) { + var pos = hiddenboard.position(); var move = current_display_line.uci_pv[i]; + var source = move.substr(0, 2); + var target = move.substr(2, 2); var promo = move.substr(4, 1); - move = move.substr(0, 2) + "-" + move.substr(2, 2); + + // Check if we need to do en passant. + var piece = pos[source]; + if (piece == "wP" || piece == "bP") { + if (source.substr(0, 1) != target.substr(0, 1) && + pos[target] === undefined) { + var ep_square = target.substr(0, 1) + source.substr(1, 1); + delete pos[ep_square]; + hiddenboard.position(pos, false); + } + } + + move = source + "-" + target; hiddenboard.move(move, false); // Do promotion if needed. if (promo != "") { - var pos = hiddenboard.position(); - var target = move.substr(3, 2); pos[target] = pos[target].substr(0, 1) + promo.toUpperCase(); hiddenboard.position(pos, false); } -- 2.39.2