Add Swap, Switching, pawns variants
[vchess.git] / client / src / base_rules.js
index 95a90cf..e70b9de 100644 (file)
@@ -80,6 +80,14 @@ export const ChessRules = class ChessRules {
     return V.ShowMoves;
   }
 
+  // Sometimes moves must remain hidden until game ends
+  static get SomeHiddenMoves() {
+    return false;
+  }
+  get someHiddenMoves() {
+    return V.SomeHiddenMoves;
+  }
+
   // Generally true, unless the variant includes random effects
   static get CorrConfirm() {
     return true;
@@ -909,6 +917,7 @@ export const ChessRules = class ChessRules {
         if (
           // NOTE: "castling" arg is used by some variants (Monster),
           // where "isAttacked" is overloaded in an infinite-recursive way.
+          // TODO: not used anymore (Monster + Doublemove2 are simplified).
           (!castleInCheck && this.isAttacked([x, i], oppCol, "castling")) ||
           (this.board[x][i] != V.EMPTY &&
             // NOTE: next check is enough, because of chessboard constraints
@@ -1193,10 +1202,8 @@ export const ChessRules = class ChessRules {
       piece = move.appear[0].p;
 
     // Update king position + flags
-    if (piece == V.KING && move.appear.length > 0) {
-      this.kingPos[c][0] = move.appear[0].x;
-      this.kingPos[c][1] = move.appear[0].y;
-    }
+    if (piece == V.KING && move.appear.length > 0)
+      this.kingPos[c] = [move.appear[0].x, move.appear[0].y];
     if (V.HasCastle) this.updateCastleFlags(move, piece);
   }