this.enlightened["w"][move.end.x][move.end.y] = true;
for (let move of movesBlack)
this.enlightened["b"][move.end.x][move.end.y] = true;
+ // Include en-passant capturing square if any:
+ let moves = currentTurn == "w" ? movesWhite : movesBlack;
+ for (let m of moves) {
+ if (
+ m.appear[0].p == V.PAWN &&
+ m.vanish.length == 2 &&
+ m.vanish[1].x != m.end.x
+ ) {
+ const psq = m.vanish[1];
+ this.enlightened[currentTurn][psq.x][psq.y] = true;
+ break;
+ }
+ }
+ }
+
+ filterValid(moves) {
+ // Used in the interface
+ return moves;
}
// Has to be redefined to avoid an infinite loop
return [];
}
- updateVariables(move) {
- super.updateVariables(move);
+ postPlay(move) {
+ super.postPlay(move);
if (move.vanish.length >= 2 && move.vanish[1].p == V.KING)
// We took opponent king (because if castle vanish[1] is a rook)
this.kingPos[this.turn] = [-1, -1];
this.updateEnlightened();
}
- unupdateVariables(move) {
- super.unupdateVariables(move);
+ postUndo(move) {
+ super.postUndo(move);
const c = move.vanish[0].c;
const oppCol = V.GetOppCol(c);
if (this.kingPos[oppCol][0] < 0)