diff --git a/sockets/socketLogic.js b/sockets/socketLogic.js index f09937d29b2660073d9e5cc4b66cea3e43481c79..011f717ff9beffe2bbfc80438b00b5f6a32cd7ea 100644 --- a/sockets/socketLogic.js +++ b/sockets/socketLogic.js @@ -85,43 +85,38 @@ async function convertLobbyToGame(lobbyId, socket) { async function showQuestions(game, socket, questionNumber) { if (questionNumber === 10) return; - let time = 15; - let isQuestionDisplayed = false; - const interval = setInterval(async () => { time--; - - // If time reaches 0 and a question has not been displayed, show the question - if (time === 0 && !isQuestionDisplayed) { + socket.to(game.getGameId()).emit("timer", time); + socket.emit("timer", time); + if (time === 0) { clearInterval(interval); - isQuestionDisplayed = true; - const question = game.gameData[questionNumber]; - const reducedAnswers = question.answers.map((answer) => ({ - text: answer.text, - })); - + let reducedAnsewers = []; + for (let answer of question.answers) { + reducedAnsewers.push({ + text: answer.text, + }); + } const reducedQuestion = { text: question.question.text, fact: question.question.fact, difficulty: question.question.difficulty, - answers: reducedAnswers, + answers: reducedAnsewers, }; - socket.to(game.getGameId()).emit("question", reducedQuestion); - socket.emit("question", reducedQuestion); - - time = 15; // Reset the timer for the next wait - } - - socket.to(game.getGameId()).emit("timer", time); - socket.emit("timer", time); - - // If time reaches 0 again, proceed to the next question - if (time === 0 && isQuestionDisplayed) { - clearInterval(interval); - showQuestions(game, socket, questionNumber + 1); + socket.emit("question", reducedAnsewers); + let waitTime = 15; + const wait = setInterval(async () => { + waitTime--; + socket.to(game.getGameId()).emit("timer", waitTime); + socket.emit("timer", waitTime); + if (waitTime === 0) { + clearInterval(wait); + showQuestions(game, socket, questionNumber + 1); + } + }, 1000); } }, 1000); }