Skip to content
Snippets Groups Projects
Commit f058f0d5 authored by ea654's avatar ea654
Browse files

Replace server.js

parent f545cc7c
No related branches found
No related tags found
No related merge requests found
......@@ -15,7 +15,6 @@ app.use(express.static('public'));
io.on('connection', (socket) => {
console.log('A user connected:', socket.id);
// Create a room
socket.on('createRoom', (playerName) => {
const roomCode = Math.random().toString(36).substring(2, 7).toUpperCase();
rooms[roomCode] = {
......@@ -31,7 +30,6 @@ io.on('connection', (socket) => {
console.log(`Room created with code ${roomCode} by ${playerName}`);
});
// Join a room
socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
const room = rooms[roomCode];
......@@ -53,8 +51,6 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
}
});
socket.on('gameSettings', ({ roomCode, category, difficulty, numQuestions }) => {
if (rooms[roomCode]) {
rooms[roomCode].settings = { category, difficulty, numQuestions };
......@@ -88,17 +84,47 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
});
socket.on('nextQuestion', (roomCode) => {
const room = rooms[roomCode];
if (!room) return;
if (room.timer) {
clearInterval(room.timer);
room.timer = null;
}
sendNextQuestion(roomCode);
});
function sendNextQuestion(roomCode) {
const room = rooms[roomCode];
if (room && room.questions.length > 0) {
room.questions.shift();
if (!room) return;
if (room.questions.length > 0) {
io.to(roomCode).emit('newQuestion', room.questions[0]);
const currentQuestion = room.questions.shift();
io.to(roomCode).emit('newQuestion', currentQuestion);
if (room.timer) {
clearInterval(room.timer);
room.timer = null;
}
room.timeRemaining = 60;
room.timer = setInterval(() => {
room.timeRemaining -= 1;
io.to(roomCode).emit('timerUpdate', room.timeRemaining);
if (room.timeRemaining <= 0) {
clearInterval(room.timer);
room.timer = null;
sendNextQuestion(roomCode);
}
}, 1000);
} else {
determineWinner(roomCode);
if (room.timer) {
clearInterval(room.timer);
room.timer = null;
}
}
}
......@@ -120,6 +146,11 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
}))
});
if (room.timer) {
clearInterval(room.timer);
room.timer = null;
}
delete rooms[roomCode];
}
......@@ -129,6 +160,12 @@ socket.on('joinRoom', ({ roomCode, playerName, playerId }) => {
if (rooms[roomCode].players[socket.id]) {
delete rooms[roomCode].players[socket.id];
console.log(`User ${socket.id} removed from room ${roomCode}`);
if (Object.keys(rooms[roomCode].players).length === 0) {
if (rooms[roomCode].timer) {
clearInterval(rooms[roomCode].timer);
}
delete rooms[roomCode];
}
}
}
});
......@@ -169,4 +206,3 @@ function shuffleArray(array) {
}
server.listen(PORT, () => console.log(`Server is running on http://localhost:${PORT}`));
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment