- // En-passant after 2-sq or 3-sq jumps
- getEpSquare(moveOrSquare)
- {
- if (!moveOrSquare)
- return undefined;
- if (typeof moveOrSquare === "string")
- {
- const square = moveOrSquare;
- if (square == "-")
- return undefined;
- let res = [];
- square.split(",").forEach(sq => {
- res.push(V.SquareToCoords(sq));
- });
- return res;
- }
- // Argument is a move:
- const move = moveOrSquare;
- const [sx,sy,ex] = [move.start.x,move.start.y,move.end.x];
- if (this.getPiece(sx,sy) == V.PAWN && Math.abs(sx - ex) >= 2)
- {
- const step = (ex-sx) / Math.abs(ex-sx);
- let res = [{
- x: sx + step,
- y: sy
- }];
- if (sx + 2*step != ex) //3-squares move
- {
- res.push({
- x: sx + 2*step,
- y: sy
- });
- }
- return res;
- }
- return undefined; //default