X-Git-Url: https://git.auder.net/js/rpsls.js?a=blobdiff_plain;f=base_rules.js;h=9cedfd054e9819a8408285fb916cb4a1828e718d;hb=296f846a620c361b3fe4e61f6bb369adc361d312;hp=47f70c2f1be3c2e7ada38dd81d2bec9e35766d68;hpb=714ce6d8c8981175b3a2bdacdfc707ca5a1ce587;p=xogo.git diff --git a/base_rules.js b/base_rules.js index 47f70c2..9cedfd0 100644 --- a/base_rules.js +++ b/base_rules.js @@ -97,6 +97,14 @@ export default class ChessRules { return true; } + // Allow to take (moving: not disappearing) own pieces? + get hasSelfCaptures() { + return ( + this.options["recycle"] || + (this.options["teleport"] && this.subTurnTeleport == 1) + ); + } + get hasReserve() { return ( !!this.options["crazyhouse"] || @@ -408,14 +416,14 @@ export default class ChessRules { } // Some additional variables from FEN (variant dependant) - setOtherVariables(fenParsed) { + setOtherVariables(fenParsed, pieceArray) { // Set flags and enpassant: if (this.hasFlags) this.setFlags(fenParsed.flags); if (this.hasEnpassant) this.epSquare = this.getEpSquare(fenParsed.enpassant); if (this.hasReserve && !this.isDiagram) - this.initReserves(fenParsed.reserve); + this.initReserves(fenParsed.reserve, pieceArray); if (this.options["crazyhouse"]) this.initIspawn(fenParsed.ispawn); if (this.options["teleport"]) { @@ -1188,7 +1196,7 @@ export default class ChessRules { } pieces(color, x, y) { - const pawnShift = this.getPawnShift(color); + const pawnShift = this.getPawnShift(color || 'w'); return { 'p': { "class": "pawn", @@ -1720,10 +1728,7 @@ export default class ChessRules { }); Array.prototype.push.apply(squares, zenCaptures); } - if ( - this.options["recycle"] || - (this.options["teleport"] && this.subTurnTeleport == 1) - ) { + if (this.hasSelfCaptures) { const selfCaptures = this.findDestSquares( [x, y], { @@ -1833,6 +1838,8 @@ export default class ChessRules { } } + // TODO here: should/could use getPotentialMovesFrom ?! (not sure) + // --> would be useful for variants like Copycat. // Search for enemy (or not) pieces attacking [x, y] findCapturesOn([x, y], o, allowed) { if (!o.byCol)