X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FScreen.js;h=8785560be68ac2ea04610e667caea25055318a84;hb=ce5afae7847431d33b55efec89d735acfcb31752;hp=0a8a75e2989e9247fdb74f2c8701424d714694f3;hpb=39fe711a185ee73c907f3d61ddd459a33f40696b;p=vchess.git diff --git a/client/src/variants/Screen.js b/client/src/variants/Screen.js index 0a8a75e2..8785560b 100644 --- a/client/src/variants/Screen.js +++ b/client/src/variants/Screen.js @@ -12,10 +12,6 @@ export class ScreenRules extends ChessRules { return false; } - get showFirstTurn() { - return true; - } - get canAnalyze() { return this.movesCount >= 2; } @@ -65,7 +61,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 +177,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 +212,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 +239,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 +252,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(); }