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