X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=variants%2FBario%2Fclass.js;h=2dd64d6273305c2d138ab4124928a5853e6c1108;hb=f57232cdb4ea7c7b5fab1c7ef23c26714d26501e;hp=6a44834a7623b3c58e90131c173edb24a8fb8695;hpb=182ba661e9c6e30fc641f4e71f29ae76961f4510;p=xogo.git diff --git a/variants/Bario/class.js b/variants/Bario/class.js index 6a44834..2dd64d6 100644 --- a/variants/Bario/class.js +++ b/variants/Bario/class.js @@ -6,7 +6,8 @@ export default class BarioRules extends ChessRules { static get Options() { return { - // TODO: Zen too? + select: C.Options.select, + input: C.Options.input, styles: [ "atomic", "cannibal", "capture", "cylinder", "dark", "madrasi", "rifle", "teleport" @@ -25,12 +26,7 @@ export default class BarioRules extends ChessRules { pieces(color, x, y) { return Object.assign( - { - 'u': { - "class": "undefined", - moves: [] - } - }, + { 'u': {"class": "undefined"} }, super.pieces(color, x, y) ); } @@ -113,6 +109,8 @@ export default class BarioRules extends ChessRules { case 0: if (typeof x == "string") moves = this.getDropMovesFrom([x, y]); + // Empty move: just start + end + moves.forEach(m => {m.vanish.pop(); m.appear.pop();}); break; case 1: // Both normal move (from defined piece) and definition allowed @@ -162,8 +160,10 @@ export default class BarioRules extends ChessRules { if (super.underCheck(square_s, oppCol)) return true; // Check potential specializations of undefined using reserve: + const inReserve = Object.keys(this.reserve[oppCol]) + .filter(k => this.reserve[oppCol][k] >= 1); const allAttacks = Array.prototype.concat.apply( - ['r', 'n', 'b', 'q'].map(p => this.pieces()[p].moves[0])); + inReserve.map(p => this.pieces()[p].both[0])); const [x, y] = square_s[0]; for (let i=0; i row.some(cell => cell.charAt(0) == this.turn && cell.charAt(1) == 'u')) ) { - return null; + return; } const variety = (c) => { return ( @@ -257,26 +258,29 @@ export default class BarioRules extends ChessRules { )].length >= 2 ); }; - this.playOnBoard(move); let next = {start: move.end, end: move.end, vanish: [], appear: []}; - for (let c of ['w', 'b']) { - if (variety(c)) { - for (let i=0; i twoOrMorePieces[k]); + if (resetCols.length >= 1) { + for (let i=0; i= 1) {