Implement moving on engine
Thus make all state management the engine's responsibility, and remove the state maintaining code from frontend!
This commit is contained in:
@@ -17,16 +17,13 @@ function post_json(url, json) {
|
||||
}
|
||||
|
||||
class Backend {
|
||||
constructor() {
|
||||
this.config = new Configuration(
|
||||
new Map(Object.entries(get_json("http://localhost:3000/get_state/")))
|
||||
getConfig() {
|
||||
return new Map(
|
||||
Object.entries(get_json("http://localhost:3000/get_state/"))
|
||||
);
|
||||
}
|
||||
getConfig() {
|
||||
return this.config;
|
||||
}
|
||||
makeMove(source, target) {
|
||||
this.config.makeMove(source, target);
|
||||
return post_json("http://localhost:3000/make_move/", [source, target]);
|
||||
}
|
||||
getAvailableMoves(position) {
|
||||
return post_json("http://localhost:3000/get_moves/", position);
|
||||
@@ -44,7 +41,7 @@ class Chess {
|
||||
this.canMoveTo = [];
|
||||
document.onclick = (ev) => this.click(ev);
|
||||
}
|
||||
syncBackend() {
|
||||
updateState() {
|
||||
let config = this.backend.getConfig();
|
||||
this.configVis.configuration = config;
|
||||
this.configVis.draw(this.canvas);
|
||||
@@ -63,7 +60,7 @@ class Chess {
|
||||
}
|
||||
this.activeSquares.unselectSquare(this.canvas);
|
||||
this.activeSquares.unsetMoveSquares(this.canvas);
|
||||
this.syncBackend();
|
||||
this.updateState();
|
||||
this.moveSource = null;
|
||||
}
|
||||
click(ev) {
|
||||
@@ -82,30 +79,4 @@ class Chess {
|
||||
}
|
||||
}
|
||||
|
||||
class Configuration {
|
||||
constructor(board) {
|
||||
this.board = new Map(board);
|
||||
}
|
||||
getAt(position) {
|
||||
if (!this.board.has(position)) {
|
||||
return null;
|
||||
}
|
||||
return this.board.get(position);
|
||||
}
|
||||
setAt(position, piece) {
|
||||
this.board.set(position, piece);
|
||||
}
|
||||
dropAt(position) {
|
||||
this.board.delete(position);
|
||||
}
|
||||
makeMove(source, target) {
|
||||
const piece = this.getAt(source);
|
||||
if (piece === null) return;
|
||||
else {
|
||||
this.setAt(target, piece);
|
||||
this.dropAt(source);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
new Chess();
|
||||
|
||||
Reference in New Issue
Block a user