Fix complete rules of Cwda
[xogo.git] / base_rules.js
index 0f950a2..757707d 100644 (file)
@@ -235,7 +235,7 @@ export default class ChessRules {
         randomness: this.options["randomness"],
         between: [{p1: 'k', p2: 'r'}],
         diffCol: ['b'],
-        flags: ['r', 'k']
+        flags: ['r']
       }
     );
     return {
@@ -642,7 +642,13 @@ export default class ChessRules {
       else
         this[arrName] = ArrayFun.init(this.size.x, this.size.y, null);
       if (arrName == "d_pieces")
-        this.marks.forEach(([i, j]) => addPiece(i, j, arrName, "mark"));
+        this.marks.forEach((m) => {
+          const formattedSquare =
+            (this.size.x - parseInt(m.substring(1), 10)).toString(36) +
+            (m.charCodeAt(0) - 97).toString(36);
+          const mCoords = V.SquareToCoords(formattedSquare);
+          addPiece(mCoords.x, mCoords.y, arrName, "mark");
+        });
     };
     if (this.marks)
       conditionalReset("d_pieces");
@@ -1686,10 +1692,6 @@ export default class ChessRules {
   getPotentialMovesOf(piece, [x, y]) {
     const color = this.getColor(x, y);
     const stepSpec = this.getStepSpec(color, x, y, piece);
-
-    // TODO: pawns, coregal
-console.log(stepSpec);
-
     let squares = [];
     if (stepSpec.attack) {
       squares = this.findDestSquares(
@@ -2254,7 +2256,7 @@ console.log(stepSpec);
     }
     // Update castling flags if start or arrive from/at rook/king locations
     move.appear.concat(move.vanish).forEach(psq => {
-      if ((!!king && psq.p == king) || this.isKing(0, 0, psq.p))
+      if ((king && psq.p == king) || (!king && this.isKing(0, 0, psq.p)))
         castleFlags[psq.c] = [this.size.y, this.size.y];
       // NOTE: not "else if" because king can capture enemy rook...
       let c = "";