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