]> git.sesse.net Git - remoteglot/blobdiff - www/js/chess.js
Fix another Chess960 Chess.js issue.
[remoteglot] / www / js / chess.js
index 6d6623e4d90005e7b5616346ca920391a4963d17..f02f04ecfe19a1287f5c1d4fd60f0b0ca007d325 100644 (file)
@@ -270,7 +270,7 @@ var Chess = function(fen) {
     var black_frc_columns = tokens[2].match(/[a-h]/g);
     if (black_frc_columns !== null) {
       for (i = 0; i < black_frc_columns.length; ++i) {
-        var sq = SQUARES.a1 + (black_frc_columns[0].charCodeAt(0) - "A".charCodeAt(0));
+        var sq = SQUARES.a8 + (black_frc_columns[0].charCodeAt(0) - "a".charCodeAt(0));
         flag = sq < kings[BLACK] ? BITS.QSIDE_CASTLE : BITS.KSIDE_CASTLE;
         castling.b |= flag;
         rooks[BLACK].push({square: sq, flag: flag});
@@ -997,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] = board[castling_from];
-        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] = board[castling_from];
-        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;
       }
 
@@ -1104,8 +1104,8 @@ var Chess = function(fen) {
         castling_from = move.to + 1;
       }
 
-      board[castling_to] = board[castling_from];
-      if(castling_from !== move.from)
+      board[castling_to] = {type: ROOK, color: us};
+      if(castling_from !== move.from && castling_from !== castling_to)
         board[castling_from] = null;
     }