X-Git-Url: https://git.sesse.net/?p=remoteglot;a=blobdiff_plain;f=www%2Fjs%2Fchess.js;h=9da372c9d920526f9802dc8fa63a9c0bed97c35f;hp=569d7c8b7f4ca2de2eb5dac2de130076b51e137a;hb=b4059a786029132eb27769a42ca52eca6d8b44cc;hpb=486fa19a98409f87248fcc0b687e7515597769d1 diff --git a/www/js/chess.js b/www/js/chess.js index 569d7c8..9da372c 100644 --- a/www/js/chess.js +++ b/www/js/chess.js @@ -968,11 +968,12 @@ var Chess = function(fen) { function make_move(move) { var us = turn; var them = swap_color(us); - var old_to = board[move.to]; push(move); board[move.to] = board[move.from]; - board[move.from] = null; + if (move.from != move.to) { + board[move.from] = null; + } /* if ep capture, remove the captured pawn */ if (move.flags & BITS.EP_CAPTURE) { @@ -996,14 +997,14 @@ var Chess = function(fen) { if (move.flags & BITS.KSIDE_CASTLE) { var castling_to = move.to - 1; var castling_from = move.rook_sq; - board[castling_to] = old_to===null ? board[castling_from] : old_to; - if(castling_from !== move.to) + board[castling_to] = {type: ROOK, color: us}; + if(castling_from !== move.to && castling_from !== castling_to) board[castling_from] = null; } else if (move.flags & BITS.QSIDE_CASTLE) { var castling_to = move.to + 1; var castling_from = move.rook_sq; - board[castling_to] = old_to===null ? board[castling_from] : old_to; - if(castling_from !== move.to) + board[castling_to] = {type: ROOK, color: us}; + if(castling_from !== move.to && castling_from !== castling_to) board[castling_from] = null; } @@ -1074,11 +1075,11 @@ var Chess = function(fen) { var us = turn; var them = swap_color(turn); - var old_from = board[move.from]; - - board[move.from] = board[move.to]; - board[move.from].type = move.piece; // to undo any promotions - board[move.to] = null; + if (move.from != move.to) { + board[move.from] = board[move.to]; + board[move.from].type = move.piece; // to undo any promotions + board[move.to] = null; + } if (move.flags & BITS.CAPTURE) { board[move.to] = {type: move.captured, color: them}; @@ -1103,8 +1104,8 @@ var Chess = function(fen) { castling_from = move.to + 1; } - board[castling_to] = old_from===null ? board[castling_from] : old_from; - if(castling_from !== move.from) + board[castling_to] = board[castling_from]; + if(castling_from !== move.from && castling_from !== castling_to) board[castling_from] = null; }