Attempt to not throw exception on server socket error
[vchess.git] / public / javascripts / variants / Checkered.js
index f1cf771..b9e7223 100644 (file)
@@ -88,7 +88,7 @@ class CheckeredRules extends ChessRules
                                // A capture occured (m.vanish.length == 2)
                                m.appear[0].c = "c";
                                moves.push(m);
-                               if (m.appear[0].p != m.vanish[1].p //avoid promotions:
+                               if (m.appear[0].p != m.vanish[1].p //avoid promotions (already treated):
                                        && (m.vanish[0].p != VariantRules.PAWN || m.end.x != lastRank))
                                {
                                        // Add transformation into captured piece
@@ -190,13 +190,12 @@ class CheckeredRules extends ChessRules
        checkGameEnd()
        {
                const color = this.turn;
-               if (!this.isAttacked(this.kingPos[color], this.getOppCol(color))
-                       && !this.isAttacked(this.kingPos[color], 'c'))
-               {
-                       return "1/2";
-               }
-               // OK, checkmate
-               return color == "w" ? "0-1" : "1-0";
+               this.moves.length++; //artifically change turn, for checkered pawns (TODO)
+               const res = this.isAttacked(this.kingPos[color], [this.getOppCol(color),'c'])
+                       ? (color == "w" ? "0-1" : "1-0")
+                       : "1/2";
+               this.moves.length--;
+               return res;
        }
 
        evalPosition()
@@ -263,9 +262,11 @@ class CheckeredRules extends ChessRules
                                notation = startColumn + "x" + finalSquare + "=" + move.appear[0].p.toUpperCase();
                        }
                        else //no capture
+                       {
                                notation = finalSquare;
-                       if (move.appear.length > 0 && piece != move.appear[0].p) //promotion
-                               notation += "=" + move.appear[0].p.toUpperCase();
+                               if (move.appear.length > 0 && piece != move.appear[0].p) //promotion
+                                       notation += "=" + move.appear[0].p.toUpperCase();
+                       }
                        return notation;
                }