diff --git a/src/models/WebSocketModel.js b/src/models/WebSocketModel.js index b6decad8593e122b80f8cc72c6db039ac0af67c6..6a769827aec672e37616367a95100fe1bce79ba5 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;