X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FHamilton.js;h=8738b2897bc73bd591a7f3ddca8f555cec5a40e7;hb=4313762da3237b04f204e121a20cab3ba7bb5dd2;hp=8c3a1bd21eae255c3827457fe59e2f76a75f0679;hpb=22053c2c72b452cba3768f7ec86acd015806c141;p=vchess.git diff --git a/client/src/variants/Hamilton.js b/client/src/variants/Hamilton.js index 8c3a1bd2..8738b289 100644 --- a/client/src/variants/Hamilton.js +++ b/client/src/variants/Hamilton.js @@ -2,6 +2,11 @@ import { ChessRules, Move, PiPo } from "@/base_rules"; import { randInt } from "@/utils/alea"; export class HamiltonRules extends ChessRules { + + static get Options() { + return null; + } + static get HasFlags() { return false; } @@ -10,6 +15,10 @@ export class HamiltonRules extends ChessRules { return false; } + get showFirstTurn() { + return true; + } + static get HOLE() { return "xx"; } @@ -42,7 +51,7 @@ export class HamiltonRules extends ChessRules { for (let i = 0; i < row.length; i++) { if (['x'].concat(V.PIECES).includes(row[i].toLowerCase())) sumElts++; else { - const num = parseInt(row[i]); + const num = parseInt(row[i], 10); if (isNaN(num)) return false; sumElts += num; } @@ -60,6 +69,10 @@ export class HamiltonRules extends ChessRules { return side == this.turn; } + hoverHighlight() { + return this.movesCount == 0; + } + // Initiate the game by choosing a square for the knight: doClick(square) { if (this.movesCount > 0) return null; @@ -77,13 +90,7 @@ export class HamiltonRules extends ChessRules { return [...Array(64).keys()].map(k => { const i = k % 8; const j = (k - i) / 8; - return new Move({ - appear: [ - new PiPo({ x: i, y: j, c: 'w', p: V.KNIGHT }) - ], - vanish: [], - start: { x: -1, y: -1 } - }); + return this.doClick([i, j]); }); } for (let i=0; i<8; i++) { @@ -129,6 +136,9 @@ export class HamiltonRules extends ChessRules { for (let psq of move.appear) board[psq.x][psq.y] = psq.c + psq.p; } + postPlay() {} + postUndo() {} + getCheckSquares() { return []; } @@ -150,4 +160,5 @@ export class HamiltonRules extends ChessRules { // First game move: return "N@" + V.CoordsToSquare(move.end); } + };