X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fbase_rules.js;h=293e933d3e8db4b2101a3a334ad5af08d59f7808;hb=dbc79ee67847c36aad6b640b15d25d6fb7f361e5;hp=d17ebe67a075bf77484e6923ce0726266268c3be;hpb=7e8a7ea1cb66adb4a987badfb0a3c2f99a21bd0a;p=vchess.git diff --git a/client/src/base_rules.js b/client/src/base_rules.js index d17ebe67..293e933d 100644 --- a/client/src/base_rules.js +++ b/client/src/base_rules.js @@ -112,6 +112,11 @@ export const ChessRules = class ChessRules { return false; } + // Some games are drawn unusually (bottomr right corner is black) + static get DarkBottomRight() { + return false; + } + // Some variants require lines drawing static get Lines() { if (V.Monochrome) { @@ -126,6 +131,11 @@ export const ChessRules = class ChessRules { return null; } + // In some variants, the player who repeat a position loses + static get LoseOnRepetition() { + return false; + } + // Some variants use click infos: doClick() { return null; @@ -645,18 +655,12 @@ export const ChessRules = class ChessRules { // All possible moves from selected square getPotentialMovesFrom([x, y]) { switch (this.getPiece(x, y)) { - case V.PAWN: - return this.getPotentialPawnMoves([x, y]); - case V.ROOK: - return this.getPotentialRookMoves([x, y]); - case V.KNIGHT: - return this.getPotentialKnightMoves([x, y]); - case V.BISHOP: - return this.getPotentialBishopMoves([x, y]); - case V.QUEEN: - return this.getPotentialQueenMoves([x, y]); - case V.KING: - return this.getPotentialKingMoves([x, y]); + case V.PAWN: return this.getPotentialPawnMoves([x, y]); + case V.ROOK: return this.getPotentialRookMoves([x, y]); + case V.KNIGHT: return this.getPotentialKnightMoves([x, y]); + case V.BISHOP: return this.getPotentialBishopMoves([x, y]); + case V.QUEEN: return this.getPotentialQueenMoves([x, y]); + case V.KING: return this.getPotentialKingMoves([x, y]); } return []; //never reached } @@ -969,7 +973,7 @@ export const ChessRules = class ChessRules { ], vanish: [ // King might be initially disguised (Titan...) - new PiPo({ x: x, y: y, p: this.board[x][y][1], c: c }), + new PiPo({ x: x, y: y, p: castlingKing, c: c }), new PiPo({ x: x, y: rookPos, p: castlingPiece, c: c }) ], end: