X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FScreen.js;h=75da9600235ff2b0179e33a009d24019c82eef07;hb=4313762da3237b04f204e121a20cab3ba7bb5dd2;hp=0a8a75e2989e9247fdb74f2c8701424d714694f3;hpb=39fe711a185ee73c907f3d61ddd459a33f40696b;p=vchess.git diff --git a/client/src/variants/Screen.js b/client/src/variants/Screen.js index 0a8a75e2..75da9600 100644 --- a/client/src/variants/Screen.js +++ b/client/src/variants/Screen.js @@ -4,6 +4,10 @@ import { ArrayFun } from "@/utils/array"; export class ScreenRules extends ChessRules { + static get Options() { + return null; + } + static get HasFlags() { return false; } @@ -12,10 +16,6 @@ export class ScreenRules extends ChessRules { return false; } - get showFirstTurn() { - return true; - } - get canAnalyze() { return this.movesCount >= 2; } @@ -65,7 +65,7 @@ export class ScreenRules extends ChessRules { for (let i=0; i<4; i++) { for (let j=0; j<8; j++) this.enlightened['b'][i][j] = true; } - for (let i=5; i<8; i++) { + for (let i=4; i<8; i++) { for (let j=0; j<8; j++) this.enlightened['w'][i][j] = true; } } @@ -181,7 +181,13 @@ export class ScreenRules extends ChessRules { this.getPotentialMovesFrom([V.size.x + (color == "w" ? 0 : 1), i]) ); } - return this.filterValid(moves); + // Some setup moves may let the king en prise (thus game would be lost) + return moves; + } + + filterValid(moves) { + if (this.movesCount <= 1) return moves; + return super.filterValid(moves); } play(move) { @@ -210,6 +216,13 @@ export class ScreenRules extends ChessRules { } } + postPlay(move) { + if (move.vanish.length == 2 && move.vanish[1].p == V.KING) + // Only black king could be captured (theoretically...) + this.kingPos['b'] = [-1, -1]; + super.postPlay(move); + } + undo(move) { const color = move.appear[0].c; if (this.movesCount <= 2) { @@ -230,6 +243,12 @@ export class ScreenRules extends ChessRules { else super.undo(move); } + postUndo(move) { + if (move.vanish.length == 2 && move.vanish[1].p == V.KING) + this.kingPos['b'] = [move.vanish[1].x, move.vanish[1].y]; + super.postUndo(move); + } + getCheckSquares() { if (this.movesCount <= 1) return []; return super.getCheckSquares(); @@ -237,6 +256,8 @@ export class ScreenRules extends ChessRules { getCurrentScore() { if (this.movesCount <= 1) return "*"; + // Only black king could be eaten on move 2: + if (this.kingPos['b'][0] < 0) return "1-0"; return super.getCurrentScore(); }