-import ChessRules from "/base_rules.js";
-import PiPo from "/utils/PiPo.js";
+import AbstractFlipRules from "/variants/_Flip/class.js";
-export default class BenedictRules extends ChessRules {
+export default class BenedictRules extends AbstractFlipRules {
static get Options() {
return {
};
}
- get hasEnpassant() {
- return false;
- }
-
- canTake() {
- return false;
- }
-
pieces(color, x, y) {
if (!this.options["cleopatra"])
return super.pieces(color, x, y);
}
postProcessPotentialMoves(moves) {
- const oppCol = C.GetOppCol(this.turn);
+ const oppCol = C.GetOppTurn(this.turn);
let bMoves = super.postProcessPotentialMoves(moves);
bMoves.forEach(m => {
m.flips = [];
},
([i1, j1], [i2, j2]) => {
return (
- super.canTake([i1, j1], [i2, j2]) &&
+ this.getColor(i2, j2) == oppCol &&
(!this.options["zen"] || this.getPiece(i2, j2) == 'k')
);
}
byCol: [oppCol],
segments: this.options["cylinder"]
},
- ([i1, j1], [i2, j2]) =>
- this.getPiece(i1, j1) != 'k' && super.canTake([i2, j2], [i1, j1])
+ ([i1, j1], [i2, j2]) => this.getPiece(i1, j1) != 'k'
);
Array.prototype.push.apply(attacks, zenAttacks);
}
return bMoves;
}
- playOnBoard(move) {
- super.playOnBoard(move);
- this.flipColorOf(move.flips);
- }
- undoOnBoard(move) {
- super.undoOnBoard(move);
- this.flipColorOf(move.flips);
- }
-
- flipColorOf(flips) {
- for (let xy of flips) {
- const newColor = C.GetOppCol(this.getColor(xy.x, xy.y));
- this.board[xy.x][xy.y] = newColor + this.board[xy.x][xy.y][1];
- }
- }
-
- // Moves cannot flip our king's color, so all are valid
- filterValid(moves) {
- return moves;
- }
-
- // A king under (regular) check flips color, and the game is over.
- underCheck() {
- return false;
- }
-
- playVisual(move, r) {
- super.playVisual(move, r);
- move.flips.forEach(f => {
- this.g_pieces[f.x][f.y].classList.toggle("white");
- this.g_pieces[f.x][f.y].classList.toggle("black");
- });
- }
-
};