type Props = { problem: string; playerInfoA: PlayerInfo; playerInfoB: PlayerInfo; leftTimeSeconds: number; }; export type PlayerInfo = { displayName: string | null; iconPath: string | null; score: number | null; code: string | null; submissionResult?: SubmissionResult; }; type SubmissionResult = { status: | "running" | "success" | "wrong_answer" | "timeout" | "compile_error" | "runtime_error" | "internal_error"; preliminaryScore: number; verificationResults: VerificationResult[]; }; type VerificationResult = { testcase_id: number | null; status: | "running" | "success" | "wrong_answer" | "timeout" | "compile_error" | "runtime_error" | "internal_error" | "canceled"; label: string; stdout: string; stderr: string; }; function submissionResultStatusToLabel( status: SubmissionResult["status"] | null, ) { switch (status) { case null: return "-"; case "running": return "Running..."; case "success": return "Accepted"; case "wrong_answer": return "Wrong Answer"; case "timeout": return "Time Limit Exceeded"; case "compile_error": return "Compile Error"; case "runtime_error": return "Runtime Error"; case "internal_error": return "Internal Error"; } } export default function GolfWatchAppGaming({ problem, playerInfoA, playerInfoB, leftTimeSeconds, }: Props) { const leftTime = (() => { const m = Math.floor(leftTimeSeconds / 60); const s = leftTimeSeconds % 60; return `${m.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")}`; })(); const scoreRatio = (() => { const scoreA = playerInfoA.score ?? 0; const scoreB = playerInfoB.score ?? 0; const totalScore = scoreA + scoreB; return totalScore === 0 ? 50 : (scoreB / totalScore) * 100; })(); return (
{playerInfoA.code}
{playerInfoB.code}