Compare commits

..

2 Commits

2 changed files with 23 additions and 8 deletions

View File

@@ -79,10 +79,13 @@ function handle(msg){
room=msg.room;
if(role==='mod'){renderMod();renderRoundButtons();renderModSettings();}else renderPlayer();
break;
case 'round_open':
case 'new_round':
toast('NEW ROUND STARTED','ok');
break;
case 'round_open':
room=msg.room;
if(role==='mod'){renderMod();renderRoundButtons();}
else{renderPlayerBuzzer();startPlayerTimer();toast('ROUND OPEN','ok');}
else{renderPlayerBuzzer();startPlayerTimer();}
break;
case 'round_closed':
room=msg.room;
@@ -342,15 +345,18 @@ function broadcastTimerToPlayers(sec,running){
// MOD ROUND CONTROL
// ══════════════════════════════════════════════════════
function toggleRound(){
// Close round (pause)
ws_send({type:'close_round'});
// Change button to open state
const btn=document.getElementById('mod-round-btn');
btn.innerHTML='▶ OPEN ROUND';
btn.className='btn btn-g btn-full';
// Toggle: Open if closed, Close if open
if(room.buzzerState.roundOpen){
ws_send({type:'close_round'});
} else {
ws_send({type:'open_round'});
}
}
function resumeRound(){
// Open round WITHOUT resetting buzzes (for accidental close recovery)
// We need to open the round but keep existing buzzer state
// For now, this just opens the round
ws_send({type:'open_round'});
}

View File

@@ -135,6 +135,15 @@ export function handleMessage(ws: WS, raw: string) {
room.buzzerState = freshBuzzer();
room.buzzerState.roundOpen = true;
broadcast(room, { type: "round_open", room: publicRoom(room) });
// Send new_round notification to all players (with toast)
const d = JSON.stringify({ type: "new_round" });
for (const p of room.players.values()) if (p.ws && p.isConnected) try { p.ws.send(d); } catch {}
if (room.modWs) try { room.modWs.send(d); } catch {}
break;
case "resume_round":
// Open round WITHOUT clearing existing buzzes (for accidental close recovery)
room.buzzerState.roundOpen = true;
broadcast(room, { type: "round_open", room: publicRoom(room) });
break;
case "close_round":
room.buzzerState.roundOpen = false;