From d36c025cf2c0d59678bd13f6e74b65ff95e9fbf9 Mon Sep 17 00:00:00 2001 From: Hatmos Date: Mon, 3 Aug 2026 22:51:26 +0200 Subject: [PATCH] add: ajout de la fonction d'instruction vocale --- client/js/guideVoice.js | 12 ++++++++++++ server/guideInstruction.js | 27 +++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 client/js/guideVoice.js create mode 100644 server/guideInstruction.js diff --git a/client/js/guideVoice.js b/client/js/guideVoice.js new file mode 100644 index 0000000..71efef5 --- /dev/null +++ b/client/js/guideVoice.js @@ -0,0 +1,12 @@ +/* + guideVoice.js + + vocalise les instructions recue du serveur via la synthese vocal du navigateur +*/ + +export function speakInstruction(texte) { + speechSynthesis.cancel(); + const enonce = new SpeechSynthesisUtterance(texte); + enonce.lang = "fr-FR"; + speechSynthesis.speak(enonce); +} diff --git a/server/guideInstruction.js b/server/guideInstruction.js new file mode 100644 index 0000000..8b7713d --- /dev/null +++ b/server/guideInstruction.js @@ -0,0 +1,27 @@ +/* + guideInstruction.js + + sert a envoyer au client guide les instructions +*/ + +const INSTRUCTION_GUIDE = "instruction"; +const INSTRUCTION_INTERVAL_MS = 5000; + + +function startInstructionLoop(wSS, socket, partnerSocket, pairState, getInstructionTexte) { + const interval = setInterval(() => { + if (pairState.gameOver) { + clearInterval(interval); + return; + } + + const guideSocket = socket.data.role === "guide" ? socket : partnerSocket; + + const texte = getInstructionText(); + guideSocket.emit(INSTRUCTION_GUIDE, { texte }); + }, INSTRUCTION_INTERVAL_MS); + + return () => clearInterval(interval); +} + +module.exports = { startInstructionLoop };