X-Git-Url: https://git.sesse.net/?p=remoteglot;a=blobdiff_plain;f=www%2Fjs%2Fremoteglot.js;h=595bce185aa1a3457dc89cb5241fe5abee9c307e;hp=bf43403ef7a6b7a3420103320b95872a37770f02;hb=2e6f47cc12a8ce6fdd3c8d5da5183abb8cc3719a;hpb=bcae12d78459730f30039137cbdbe1cf8f490e5b diff --git a/www/js/remoteglot.js b/www/js/remoteglot.js index bf43403..595bce1 100644 --- a/www/js/remoteglot.js +++ b/www/js/remoteglot.js @@ -407,7 +407,7 @@ var add_pv = function(fen, uci_pv, pretty_pv, move_num, toplay, opt_limit, opt_s var print_pv = function(line_num, pretty_pv, move_num, toplay, opt_limit, opt_showlast) { var pv = ''; var i = 0; - if (opt_limit && opt_showlast) { + if (opt_limit && opt_showlast && pretty_pv.length > opt_limit) { // Truncate the PV at the beginning (instead of at the end). // We assume here that toplay is 'W'. We also assume that if // opt_showlast is set, then it is the history, and thus, @@ -455,7 +455,7 @@ var update_highlight = function() { } var update_history = function() { - if (display_lines[0] === null) { + if (display_lines[0] === null || display_lines[0].pretty_pv.length == 0) { $("#history").html("No history"); } else if (truncate_display_history) { $("#history").html(print_pv(0, display_lines[0].pretty_pv, 1, 'W', 8, true)); @@ -749,7 +749,7 @@ var update_displayed_line = function() { $("#linenav").show(); $("#linemsg").hide(); - if (current_display_move == 0) { + if (current_display_move <= 0) { $("#prevmove").html("Previous"); } else { $("#prevmove").html("Previous"); @@ -762,15 +762,29 @@ 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); + pos = hiddenboard.position(); // 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); }