X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fbase_rules.js;h=448604a46e27233ad8d2e3d73be438f8a5458f01;hp=f9574004f5973f2e6cef6911a392b04754c9085d;hb=d54f6261c9e30f4eabb402ad301dd5c5e40fb656;hpb=6f2f94374f1e73c375edf732d9425e575e81fff7 diff --git a/client/src/base_rules.js b/client/src/base_rules.js index f9574004..448604a4 100644 --- a/client/src/base_rules.js +++ b/client/src/base_rules.js @@ -85,6 +85,15 @@ export const ChessRules = class ChessRules { return V.CanFlip; } + // Some variants require turn indicator + // (generally when analysis or flip is diabled) + static get ShowTurn() { + return !V.CanAnalyze || V.ShowMoves != "all" || !V.CanFlip; + } + get showTurn() { + return V.ShowTurn; + } + static get IMAGE_EXTENSION() { // All pieces should be in the SVG format return ".svg"; @@ -191,9 +200,9 @@ export const ChessRules = class ChessRules { return V.CoordToColumn(coords.y) + (V.size.x - coords.x); } - // Path to pieces + // Path to pieces (standard ones in pieces/ folder) getPpath(b) { - return b; //usual pieces in pieces/ folder + return b; } // Path to promotion pieces (usually the same) @@ -679,6 +688,7 @@ export const ChessRules = class ChessRules { enpassantMove.vanish.push({ x: x, y: epSquare.y, + // Captured piece is usually a pawn, but next line seems harmless p: this.getPiece(x, epSquare.y), c: this.getColor(x, epSquare.y) }); @@ -1100,7 +1110,9 @@ export const ChessRules = class ChessRules { ) { const flagIdx = (move.start.y == this.castleFlags[c][0] ? 0 : 1); this.castleFlags[c][flagIdx] = V.size.y; - } else if ( + } + // NOTE: not "else if" because a rook could take an opposing rook + if ( move.end.x == oppFirstRank && //we took opponent rook? this.castleFlags[oppCol].includes(move.end.y) ) { @@ -1281,8 +1293,8 @@ export const ChessRules = class ChessRules { } let candidates = [0]; - for (let j = 1; j < moves1.length && moves1[j].eval == moves1[0].eval; j++) - candidates.push(j); + for (let i = 1; i < moves1.length && moves1[i].eval == moves1[0].eval; i++) + candidates.push(i); return moves1[candidates[randInt(candidates.length)]]; }