X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FYote.js;h=6863026e7708916e05ec972a7ed790864456def9;hb=HEAD;hp=7158d4f4aa05fc3402ed027c14999699e1f51797;hpb=08909cf4fc514e056d04f14086ddccc098f3ec75;p=vchess.git diff --git a/client/src/variants/Yote.js b/client/src/variants/Yote.js index 7158d4f4..6863026e 100644 --- a/client/src/variants/Yote.js +++ b/client/src/variants/Yote.js @@ -3,6 +3,10 @@ import { randInt } from "@/utils/alea"; export class YoteRules extends ChessRules { + static get Options() { + return null; + } + static get HasFlags() { return false; } @@ -23,6 +27,25 @@ export class YoteRules extends ChessRules { return true; } + static IsGoodPosition(position) { + if (position.length == 0) return false; + const rows = position.split("/"); + if (rows.length != V.size.x) return false; + for (let row of rows) { + let sumElts = 0; + for (let i = 0; i < row.length; i++) { + if (row[i].toLowerCase() == V.PAWN) sumElts++; + else { + const num = parseInt(row[i], 10); + if (isNaN(num) || num <= 0) return false; + sumElts += num; + } + } + if (sumElts != V.size.y) return false; + } + return true; + } + static IsGoodFen(fen) { if (!ChessRules.IsGoodFen(fen)) return false; const fenParsed = V.ParseFen(fen); @@ -53,7 +76,7 @@ export class YoteRules extends ChessRules { ); } - static GenRandInitFen(randomness) { + static GenRandInitFen() { return "6/6/6/6/6 w 0 12,12 -,-"; } @@ -120,10 +143,6 @@ export class YoteRules extends ChessRules { return { x: 5, y: 6 }; } - static get PIECES() { - return [V.PAWN]; - } - getColor(i, j) { if (i >= V.size.x) return i == V.size.x ? "w" : "b"; return this.board[i][j].charAt(0); @@ -152,8 +171,8 @@ export class YoteRules extends ChessRules { return (x < V.size.x && this.getColor(x, y) != side); } - // TODO: hoverHighlight() would well take an arg "side"... - hoverHighlight(x, y) { + hoverHighlight([x, y], side) { + if (!!side && side != this.turn) return false; const L = this.captures.length; if (!this.captures[L-1]) return false; const oppCol = V.GetOppCol(this.turn); @@ -227,7 +246,7 @@ export class YoteRules extends ChessRules { const mv = this.doClick([x, y]); return (!!mv ? [mv] : []); } - if (x >= V.size.x) return this.getReserveMoves([x, y]); + if (x >= V.size.x) return this.getReserveMoves(x); return this.getPotentialPawnMoves([x, y]); }