"use client"; import { Dispatch, SetStateAction } from "react"; import { Session } from "next-auth"; import type { Screen } from "../../lib/types"; import type { useSoloGame } from "../../lib/useSoloGame"; import type { useMultiGame } from "../../lib/useMultiGame"; import type { useGameHandlers } from "../../lib/useGameHandlers"; import { fmt } from "../../lib/utils"; import { HomeScreen } from "./HomeScreen"; import { LobbyScreen } from "./LobbyScreen"; import { SoloScreen } from "./SoloScreen"; import { GameScreen } from "./GameScreen"; import { AuthModal } from "./AuthModal"; import { ProfileScreen } from "./ProfileScreen"; type Props = { screen: Screen; setScreen: Dispatch>; session: Session | null; solo: ReturnType; multi: ReturnType; handlers: ReturnType; playerName: string; setPlayerName: Dispatch>; joinCode: string; setJoinCode: Dispatch>; error: string | null; setError: Dispatch>; loading: boolean; showAuth: boolean; setShowAuth: Dispatch>; }; export function ScreenRouter({ screen, setScreen, session, solo, multi, handlers, playerName, setPlayerName, joinCode, setJoinCode, error, setError, loading, showAuth, setShowAuth, }: Props) { if (screen === "profile") return ( setScreen("home")} /> ); if (screen === "home") return ( <> setShowAuth(true)} onShowProfile={() => setScreen("profile")} /> {showAuth && setShowAuth(false)} onSuccess={() => setShowAuth(false)} />} ); if (screen === "solo") return ( { solo.reset(); setScreen("home"); }} onNewGame={solo.start} onRetry={solo.retryLoad} /> ); if (screen === "lobby" && multi.room && multi.playerId) return ( ); if (screen === "game" && multi.room && multi.playerId) return ( ); return null; }