From 23860e8bc0bb5af2e9b532f417059fd211456c88 Mon Sep 17 00:00:00 2001 From: zm343 <2639-zm343@users.noreply.gitlab.cci.drexel.edu> Date: Thu, 5 Sep 2024 22:21:32 +0000 Subject: [PATCH] Restart code --- src/models/WebSocketModel.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/models/WebSocketModel.js b/src/models/WebSocketModel.js index b6decad..6a76982 100644 --- a/src/models/WebSocketModel.js +++ b/src/models/WebSocketModel.js @@ -41,6 +41,27 @@ class WebSocketModel { } } + const alivePlayers = this.games[game].players.filter( + (player) => !player.spectating + ); + + if (alivePlayers.length === 1) { + const winner = alivePlayers[0].pid;; + + for (let conn of this.games[game].players) { + conn.connection.send( + JSON.stringify({ + type: "restart", + pid: winner + }), + ); + } + + this.resetGame(game); + + return; + } + for (let conn of this.games[game].players) { let playerView = null; if (conn.spectating) { @@ -100,6 +121,18 @@ class WebSocketModel { this.createInterval(gameId); } + resetGame(gameId) { + this.games[gameId].gameBoard = gameModule.createGameBoard(100, 100); + this.games[gameId].players.forEach((player) => { + player.spectating = false; + }); + this.games[gameId].started = false; + this.games[gameId].readyPlayers = 0; + this.games[gameId].borderCounter = 0; + this.games[gameId].numPlayers = 0; + this.games[gameId].elapsedTime = 0; + } + moveHandler(connection, message) { console.log("Received move: " + message.data); let movement = message.data; -- GitLab