Implement move squares highlighting

Issue #3
This commit is contained in:
2021-12-13 20:46:53 +01:00
parent 9bb6a60ded
commit 27dce5f7a3
2 changed files with 27 additions and 2 deletions

View File

@@ -7,6 +7,15 @@ function get_json(url) {
return JSON.parse(request.responseText); return JSON.parse(request.responseText);
} }
function post_json(url, json) {
var request = new XMLHttpRequest();
request.open("post", url, false);
request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
request.send(JSON.stringify(json));
if (request.status != 200) return null;
return JSON.parse(request.responseText);
}
class Backend { class Backend {
constructor() { constructor() {
this.config = new Configuration( this.config = new Configuration(
@@ -20,8 +29,7 @@ class Backend {
this.config.makeMove(source, target); this.config.makeMove(source, target);
} }
getAvailableMoves(position) { getAvailableMoves(position) {
position; return post_json("http://localhost:3000/get_moves/", position);
return [];
} }
} }
@@ -46,6 +54,7 @@ class Chess {
let validMoves = this.backend.getAvailableMoves(source); let validMoves = this.backend.getAvailableMoves(source);
if (validMoves === null) return; if (validMoves === null) return;
this.activeSquares.selectSquare(this.canvas, source); this.activeSquares.selectSquare(this.canvas, source);
this.activeSquares.setMoveSquares(this.canvas, validMoves);
this.moveSource = source; this.moveSource = source;
} }
finalizeMove(target) { finalizeMove(target) {
@@ -53,6 +62,7 @@ class Chess {
this.backend.makeMove(this.moveSource, target); this.backend.makeMove(this.moveSource, target);
} }
this.activeSquares.unselectSquare(this.canvas); this.activeSquares.unselectSquare(this.canvas);
this.activeSquares.unsetMoveSquares(this.canvas);
this.syncBackend(); this.syncBackend();
this.moveSource = null; this.moveSource = null;
} }

View File

@@ -89,12 +89,27 @@ export function rowColToBoardIndex(row, col) {
export class ActiveSquares { export class ActiveSquares {
constructor() { constructor() {
this.selectedSquare = null; this.selectedSquare = null;
this.moveSquares = [];
} }
selectSquare(canvas, position) { selectSquare(canvas, position) {
let [r, c] = boardIndexToRowCol(position); let [r, c] = boardIndexToRowCol(position);
canvas.drawSquareColor("#c0c0ff", r, c); canvas.drawSquareColor("#c0c0ff", r, c);
this.selectedSquare = position; this.selectedSquare = position;
} }
setMoveSquares(canvas, moveSquares) {
moveSquares.forEach((position) => {
let [r, c] = boardIndexToRowCol(position);
canvas.drawSquareColor("#ffffc0", r, c);
this.moveSquares.push(position);
});
}
unsetMoveSquares(canvas) {
this.moveSquares.forEach((position) => {
let [r, c] = boardIndexToRowCol(position);
canvas.drawSquareColor(canvas.decideColor(r, c), r, c);
});
this.moveSquares = [];
}
unselectSquare(canvas) { unselectSquare(canvas) {
if (this.selectedSquare === null) return; if (this.selectedSquare === null) return;
let [r, c] = boardIndexToRowCol(this.selectedSquare); let [r, c] = boardIndexToRowCol(this.selectedSquare);