From cc03d87c166c3a5490c39f565ff69556e8af7f4c Mon Sep 17 00:00:00 2001
From: enr27 <enr27@drexel.edu>
Date: Sun, 8 Dec 2024 03:54:09 +0000
Subject: [PATCH] Replace server.js

---
 server.js | 44 +++++++++++++++++++++++---------------------
 1 file changed, 23 insertions(+), 21 deletions(-)

diff --git a/server.js b/server.js
index 743ac83..c30088d 100644
--- a/server.js
+++ b/server.js
@@ -30,7 +30,7 @@ io.on('connection', (socket) => {
     console.log(`Room created with code ${roomCode} by ${playerName}`);
   });
 
-socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
+  socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
     const room = rooms[roomCode];
 
     if (room) {
@@ -49,7 +49,7 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
     } else {
         socket.emit('error', 'Room not found');
     }
-});
+  });
 
   socket.on('gameSettings', ({ roomCode, category, difficulty, numQuestions }) => {
     if (rooms[roomCode]) {
@@ -69,18 +69,18 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
 
   socket.on('submitAnswer', ({ roomCode, answer }) => {
     const room = rooms[roomCode];
-    if (!room || !room.questions || room.questions.length === 0) {
-      socket.emit('error', 'No questions available');
-      return;
+    if (!room || !room.currentQuestion) {
+        socket.emit('error', 'No questions available');
+        return;
     }
 
-    const currentQuestion = room.questions[0];
-    const correct = currentQuestion.correctAnswer === answer;
+    const correct = room.currentQuestion.correctAnswer === answer;
     if (correct) {
-      room.players[socket.id].score += 1;
+        room.players[socket.id].score += 1;
+        socket.emit('scoreUpdate', room.players[socket.id].score);
     }
 
-    socket.emit('answerResult', { correct, correctAnswer: currentQuestion.correctAnswer });
+    socket.emit('answerResult', { correct, correctAnswer: room.currentQuestion.correctAnswer });
   });
 
   socket.on('nextQuestion', (roomCode) => {
@@ -93,22 +93,24 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
     }
 
     sendNextQuestion(roomCode); 
-});
+  });
 
   function sendNextQuestion(roomCode) {
     const room = rooms[roomCode]; 
     if (!room) return; 
 
+    if (room.timer) {
+        clearInterval(room.timer); 
+        room.timer = null; 
+    }
+
     if (room.questions.length > 0) {
-        const currentQuestion = room.questions.shift(); 
-        io.to(roomCode).emit('newQuestion', currentQuestion); 
+        const currentQuestion = room.questions.shift();
+        room.currentQuestion = currentQuestion;
 
-        if (room.timer) {
-            clearInterval(room.timer); 
-            room.timer = null; 
-        }
+        io.to(roomCode).emit('newQuestion', currentQuestion);
 
-        room.timeRemaining = 60; 
+        room.timeRemaining = 30; 
         room.timer = setInterval(() => {
             room.timeRemaining -= 1; 
             io.to(roomCode).emit('timerUpdate', room.timeRemaining); 
@@ -116,7 +118,7 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
             if (room.timeRemaining <= 0) {
                 clearInterval(room.timer); 
                 room.timer = null; 
-                sendNextQuestion(roomCode); 
+                io.to(roomCode).emit('timeUp', { correctAnswer: room.currentQuestion.correctAnswer });
             }
         }, 1000); 
     } else {
@@ -127,7 +129,7 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
             room.timer = null;
         }
     }
-}
+  }
 
   function determineWinner(roomCode) {
     const room = rooms[roomCode];
@@ -147,12 +149,12 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
     });
 
     if (room.timer) {
-        clearInterval(room.timer); 
+        clearInterval(room.timer);
         room.timer = null;
     }
 
     delete rooms[roomCode];
-}
+  }
 
   socket.on('disconnect', () => {
   console.log('User disconnected:', socket.id);
-- 
GitLab