From 1cb76c000c21a8c1460aa351473a0710f0baa9fe Mon Sep 17 00:00:00 2001 From: vincentastolfi Date: Tue, 21 May 2024 14:37:29 +0200 Subject: [PATCH] :sparkles: piece rotation reimplementation --- public/scripts/game.js | 69 ++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/public/scripts/game.js b/public/scripts/game.js index 335373e..9cf1fa7 100644 --- a/public/scripts/game.js +++ b/public/scripts/game.js @@ -250,45 +250,54 @@ function clickNewCase(piece) { return clickNewCasehandler; } -function rotatePiece(player, piece) { +function rotatePiece(piece) { const handler = function (event) { event.preventDefault(); - player.pieces.forEach((p) => { - if ( - p.id === piece.id && - p.isSelected && - p.isMovable && - validMoove(player, piece, { - type: "rotation", - selectedCase: p.startPos, - }) - ) { - for (let i = p.startPos.x; i <= p.endPos.x; i++) { - for (let j = p.startPos.y; j <= p.endPos.y; j++) { - player.grid.cases[i][j].piece = ""; - player.grid.cases[i][j].isShip = false; + socket.emit("get player", socket.id, (response) => { + let player = response.player; + player.pieces.forEach((p) => { + if ( + p.id === piece.id && + p.isSelected && + p.isMovable && + validMoove(player, piece, { + type: "rotation", + selectedCase: p.startPos, + }) + ) { + for (let i = p.startPos.x; i <= p.endPos.x; i++) { + for (let j = p.startPos.y; j <= p.endPos.y; j++) { + player.grid.cases[i][j].piece = ""; + player.grid.cases[i][j].isShip = false; + } + } + if (p.vertical) { + p.endPos = { x: p.startPos.x + p.size - 1, y: p.startPos.y }; + p.vertical = false; + } else { + p.endPos = { x: p.startPos.x, y: p.startPos.y + p.size - 1 }; + p.vertical = true; } - } - if (p.vertical) { - p.endPos = { x: p.startPos.x + p.size - 1, y: p.startPos.y }; - p.vertical = false; - } else { - p.endPos = { x: p.startPos.x, y: p.startPos.y + p.size - 1 }; - p.vertical = true; - } - for (let i = p.startPos.x; i <= p.endPos.x; i++) { - for (let j = p.startPos.y; j <= p.endPos.y; j++) { - player.grid.cases[i][j].piece = p; - player.grid.cases[i][j].isShip = true; + for (let i = p.startPos.x; i <= p.endPos.x; i++) { + for (let j = p.startPos.y; j <= p.endPos.y; j++) { + player.grid.cases[i][j].piece = p; + player.grid.cases[i][j].isShip = true; + } } } - } + socket.emit("update piece", socket.id, p); + socket.emit("update grid", socket.id, player.grid, (response) => { + if (response.status === true) { + drawGrid(); + } else { + // TODO : error handling + } + }); + }); }); - drawGrid(player); }; - return handler; }