diff --git a/packages/client/src/components/leaderboard.tsx b/packages/client/src/components/leaderboard.tsx index f8383a7..b1482ee 100644 --- a/packages/client/src/components/leaderboard.tsx +++ b/packages/client/src/components/leaderboard.tsx @@ -28,6 +28,7 @@ export function Leaderboard({ entries, resultsEntered }: LeaderboardProps) { P:{resultsEntered ? entry.predictionPoints : "?"} J:{entry.juryPoints} B:{entry.bingoPoints} + Q:{entry.quizPoints} {entry.totalPoints} @@ -39,6 +40,7 @@ export function Leaderboard({ entries, resultsEntered }: LeaderboardProps) {
  • P = Prediction points — 25 for correct winner, 10 each for 2nd/3rd, 15 for last place
  • J = Jury points — rate each act 1-12, earn up to 5 pts per round for matching the group consensus
  • B = Bingo points — 2 pts per tapped trope + 10 bonus for a full bingo line
  • +
  • Q = Quiz points — 5 easy, 10 medium, 15 hard
  • diff --git a/packages/client/src/routes/display.$roomCode.tsx b/packages/client/src/routes/display.$roomCode.tsx index 8c8395f..5d8f019 100644 --- a/packages/client/src/routes/display.$roomCode.tsx +++ b/packages/client/src/routes/display.$roomCode.tsx @@ -6,6 +6,7 @@ import { PlayerList } from "@/components/player-list" import { JuryDisplay } from "@/components/jury-display" import { BingoDisplay } from "@/components/bingo-display" import { Leaderboard } from "@/components/leaderboard" +import { QuizDisplay } from "@/components/quiz-display" import { RoomHeader } from "@/components/room-header" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" @@ -57,6 +58,9 @@ function DisplayView() { {room.currentAct === "scoring" && gameState && (

    Scoring

    + {gameState.currentQuizQuestion && ( + + )} {gameState?.actualResults && ( diff --git a/packages/client/src/routes/host.$roomCode.tsx b/packages/client/src/routes/host.$roomCode.tsx index 76ec738..af0ad1d 100644 --- a/packages/client/src/routes/host.$roomCode.tsx +++ b/packages/client/src/routes/host.$roomCode.tsx @@ -7,6 +7,8 @@ import { JuryHost } from "@/components/jury-host" import { JuryVoting } from "@/components/jury-voting" import { BingoCard } from "@/components/bingo-card" import { ActualResultsForm } from "@/components/actual-results-form" +import { QuizHost } from "@/components/quiz-host" +import { QuizBuzzer } from "@/components/quiz-buzzer" import { Leaderboard } from "@/components/leaderboard" import { RoomHeader } from "@/components/room-header" import { Button } from "@/components/ui/button" @@ -117,6 +119,14 @@ function HostView() { /> )} + {gameState && room.currentAct === "scoring" && gameState.currentQuizQuestion && ( + send({ type: "buzz" })} + /> + )} + {gameState && (room.currentAct === "scoring" || room.currentAct === "ended") && ( )} @@ -181,6 +191,14 @@ function HostView() { onCloseVote={() => send({ type: "close_jury_vote" })} /> )} + {gameState && room.currentAct === "scoring" && ( + send({ type: "start_quiz_question" })} + onJudge={(correct) => send({ type: "judge_quiz_answer", correct })} + onSkip={() => send({ type: "skip_quiz_question" })} + /> + )} {gameState && (room.currentAct === "scoring" || room.currentAct === "ended") && ( )} + {gameState && room.currentAct === "scoring" && gameState.currentQuizQuestion && ( + send({ type: "buzz" })} + /> + )} + {gameState && room.currentAct === "scoring" && ( )}