X-Git-Url: https://git.auder.net/rpsls.js?a=blobdiff_plain;f=variants%2FBenedict%2Fclass.js;h=25e1ef8dad0d595663258af68ce87471064b7aad;hb=727f2e558776b14a29cb1552a05a88cc9a4b0297;hp=dfabddb72cc9a41efa3ef78026d78f43e8340a35;hpb=6b9320bb6e42ece7694df32f85aab4d2989f6a13;p=xogo.git diff --git a/variants/Benedict/class.js b/variants/Benedict/class.js index dfabddb..25e1ef8 100644 --- a/variants/Benedict/class.js +++ b/variants/Benedict/class.js @@ -1,7 +1,6 @@ -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 { @@ -25,14 +24,6 @@ export default class BenedictRules extends ChessRules { }; } - get hasEnpassant() { - return false; - } - - canTake() { - return false; - } - pieces(color, x, y) { if (!this.options["cleopatra"]) return super.pieces(color, x, y); @@ -44,7 +35,7 @@ export default class BenedictRules extends ChessRules { } postProcessPotentialMoves(moves) { - const oppCol = C.GetOppCol(this.turn); + const oppCol = C.GetOppTurn(this.turn); let bMoves = super.postProcessPotentialMoves(moves); bMoves.forEach(m => { m.flips = []; @@ -58,7 +49,7 @@ export default class BenedictRules extends ChessRules { }, ([i1, j1], [i2, j2]) => { return ( - super.canTake([i1, j1], [i2, j2]) && + this.getColor(i2, j2) == oppCol && (!this.options["zen"] || this.getPiece(i2, j2) == 'k') ); } @@ -70,8 +61,7 @@ export default class BenedictRules extends ChessRules { 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); } @@ -82,38 +72,4 @@ export default class BenedictRules extends ChessRules { 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"); - }); - } - };