Files
WikiRush/app/page.tsx
T

71 lines
1.8 KiB
TypeScript

"use client";
import { useState } from "react";
import { useSoloGame } from "../lib/useSoloGame";
import { useMultiGame } from "../lib/useMultiGame";
import { useGameEffects } from "../lib/useGameEffects";
import { useGameHandlers } from "../lib/useGameHandlers";
import { ScreenRouter } from "./components/ScreenRouter";
import type { Screen } from "../lib/types";
export default function WikiRush() {
const [screen, setScreen] = useState<Screen>("home");
const [playerName, setPlayerName] = useState("");
const [joinCode, setJoinCode] = useState("");
const [maxPlayers, setMaxPlayers] = useState(16);
const [totalRounds, setTotalRounds] = useState(3);
const [gameMode, setGameMode] = useState<"race" | "all_finish">("race");
const [error, setError] = useState<string | null>(null);
const [loading, setLoading] = useState(false);
const [showAuth, setShowAuth] = useState(false);
const solo = useSoloGame();
const multi = useMultiGame();
const { session } = useGameEffects({
solo,
multi,
screen,
setScreen,
setPlayerName,
});
const handlers = useGameHandlers({
solo,
multi,
playerName,
joinCode,
maxPlayers,
totalRounds,
gameMode,
setScreen,
setError,
setLoading,
});
return (
<ScreenRouter
screen={screen}
setScreen={setScreen}
session={session}
solo={solo}
multi={multi}
handlers={handlers}
playerName={playerName}
setPlayerName={setPlayerName}
joinCode={joinCode}
setJoinCode={setJoinCode}
maxPlayers={maxPlayers}
setMaxPlayers={setMaxPlayers}
totalRounds={totalRounds}
setTotalRounds={setTotalRounds}
gameMode={gameMode}
setGameMode={setGameMode}
error={error}
setError={setError}
loading={loading}
showAuth={showAuth}
setShowAuth={setShowAuth}
/>
);
}