From 3dc9bdcc21bd5a94f75660d9576e611eaab47e5e Mon Sep 17 00:00:00 2001 From: KeshavAnandCode Date: Wed, 8 Apr 2026 19:21:32 -0500 Subject: [PATCH] =?UTF-8?q?Link=20timer=20toggle=20to=20Open/Pause/Resume?= =?UTF-8?q?=20buttons=20=E2=80=94=20timer=20auto-starts/pauses/resumes=20w?= =?UTF-8?q?ith=20round?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/public/script.js | 46 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/src/public/script.js b/src/public/script.js index 6b1ed90..f669cb1 100644 --- a/src/public/script.js +++ b/src/public/script.js @@ -372,17 +372,55 @@ function broadcastTimerToPlayers(sec,running){ // MOD ROUND CONTROL // ══════════════════════════════════════════════════════ function toggleRound(){ - // Toggle: Open if closed, Close if open if(room.buzzerState.roundOpen){ ws_send({type:'close_round'}); + // Pause timer if toggle is ON + if(document.getElementById('timer-tog').checked){ + modTimerToggle(); + } } else { ws_send({type:'open_round'}); + // Start timer if toggle is ON + if(document.getElementById('timer-tog').checked){ + modTimerLoad(); + modTimerRunning=true; + document.getElementById('btn-timer-ss').textContent='PAUSE'; + modTimerInterval=setInterval(()=>{ + modTimerRemaining--; + renderModTimerDisplay(); + broadcastTimerToPlayers(modTimerRemaining,true); + if(modTimerRemaining<=0){ + clearInterval(modTimerInterval);modTimerRunning=false; + document.getElementById('btn-timer-ss').textContent='START'; + document.getElementById('timer-tog').checked=false; + ws_send({type:'close_round'}); + toast('TIME UP — round closed','warn'); + } + },1000); + } } } function resumeRound(){ - // Open round WITHOUT clearing existing buzzes (for accidental close recovery) ws_send({type:'resume_round'}); + // Resume timer if toggle is ON + if(document.getElementById('timer-tog').checked){ + modTimerLoad(); + modTimerRunning=true; + document.getElementById('btn-timer-ss').textContent='PAUSE'; + modTimerInterval=setInterval(()=>{ + modTimerRemaining--; + renderModTimerDisplay(); + broadcastTimerToPlayers(modTimerRemaining,true); + if(modTimerRemaining<=0){ + clearInterval(modTimerInterval);modTimerRunning=false; + document.getElementById('btn-timer-ss').textContent='START'; + document.getElementById('timer-tog').checked=false; + ws_send({type:'close_round'}); + toast('TIME UP — round closed','warn'); + } + },1000); + } } function renderRoundButtons(){ @@ -398,6 +436,10 @@ function renderRoundButtons(){ btn.className='btn btn-g btn-full'; resumeBtn.style.display='block'; } + + // Sync timer toggle state with modTimerRunning + const tog=document.getElementById('timer-tog'); + if(tog){tog.checked=modTimerRunning;} } // ══════════════════════════════════════════════════════