HiddenRules almost OK (need to ignore checks. Position kings on first rank?). window...
[vchess.git] / client / src / base_rules.js
index 5bf47f7..7949d7f 100644 (file)
@@ -53,11 +53,6 @@ export const ChessRules = class ChessRules {
     return "all";
   }
 
-  // Path to pieces
-  static getPpath(b) {
-    return b; //usual pieces in pieces/ folder
-  }
-
   // Turn "wb" into "B" (for FEN)
   static board2fen(b) {
     return b[0] == "w" ? b[1].toUpperCase() : b[1];
@@ -160,6 +155,11 @@ export const ChessRules = class ChessRules {
     return V.CoordToColumn(coords.y) + (V.size.x - coords.x);
   }
 
+  // Path to pieces
+  getPpath(b) {
+    return b; //usual pieces in pieces/ folder
+  }
+
   // Aggregates flags into one object
   aggregateFlags() {
     return this.castleFlags;
@@ -379,7 +379,9 @@ export const ChessRules = class ChessRules {
   // INITIALIZATION
 
   constructor(fen) {
-    this.re_init(fen);
+    // In printDiagram() fen isn't supply because only getPpath() is used
+    if (fen)
+      this.re_init(fen);
   }
 
   // Fen string fully describes the game state
@@ -968,6 +970,8 @@ export const ChessRules = class ChessRules {
   // After move is played, update variables + flags
   updateVariables(move) {
     let piece = undefined;
+    // TODO: update variables before move is played, and just use this.turn ?
+    // (doesn't work in general, think MarseilleChess)
     let c = undefined;
     if (move.vanish.length >= 1) {
       // Usual case, something is moved
@@ -978,9 +982,8 @@ export const ChessRules = class ChessRules {
       piece = move.appear[0].p;
       c = move.appear[0].c;
     }
-    if (c == "c") {
-      //if (!["w","b"].includes(c))
-      // 'c = move.vanish[0].c' doesn't work for Checkered
+    if (!['w','b'].includes(c)) {
+      // Checkered, for example
       c = V.GetOppCol(this.turn);
     }
     const firstRank = c == "w" ? V.size.x - 1 : 0;
@@ -1265,10 +1268,10 @@ export const ChessRules = class ChessRules {
         // Capture
         const startColumn = V.CoordToColumn(move.start.y);
         notation = startColumn + "x" + finalSquare;
-      } //no capture
+      }
       else notation = finalSquare;
       if (move.appear.length > 0 && move.appear[0].p != V.PAWN)
-        //promotion
+        // Promotion
         notation += "=" + move.appear[0].p.toUpperCase();
       return notation;
     }