2026-04-10 15:43:07 +02:00
|
|
|
"use client";
|
|
|
|
|
|
2026-04-10 16:45:57 +02:00
|
|
|
import { useState } from "react";
|
|
|
|
|
import { useSoloGame } from "../lib/useSoloGame";
|
2026-04-10 15:43:07 +02:00
|
|
|
import { useMultiGame } from "../lib/useMultiGame";
|
2026-04-10 16:45:57 +02:00
|
|
|
import { useGameEffects } from "../lib/useGameEffects";
|
2026-04-10 16:44:24 +02:00
|
|
|
import { useGameHandlers } from "../lib/useGameHandlers";
|
2026-04-10 16:47:13 +02:00
|
|
|
import { ScreenRouter } from "./components/ScreenRouter";
|
2026-04-10 16:45:57 +02:00
|
|
|
import type { Screen } from "../lib/types";
|
2026-04-10 15:43:07 +02:00
|
|
|
|
|
|
|
|
export default function WikiRush() {
|
|
|
|
|
const [screen, setScreen] = useState<Screen>("home");
|
|
|
|
|
const [playerName, setPlayerName] = useState("");
|
|
|
|
|
const [joinCode, setJoinCode] = useState("");
|
2026-04-11 13:47:05 +02:00
|
|
|
const [maxPlayers, setMaxPlayers] = useState(16);
|
|
|
|
|
const [totalRounds, setTotalRounds] = useState(3);
|
2026-04-11 21:58:35 +02:00
|
|
|
const [gameMode, setGameMode] = useState<"race" | "all_finish">("race");
|
2026-04-10 15:43:07 +02:00
|
|
|
const [error, setError] = useState<string | null>(null);
|
|
|
|
|
const [loading, setLoading] = useState(false);
|
|
|
|
|
const [showAuth, setShowAuth] = useState(false);
|
|
|
|
|
|
|
|
|
|
const solo = useSoloGame();
|
|
|
|
|
const multi = useMultiGame();
|
|
|
|
|
|
2026-04-10 16:45:57 +02:00
|
|
|
const { session } = useGameEffects({ solo, multi, screen, setScreen, setPlayerName });
|
2026-04-11 21:58:35 +02:00
|
|
|
const handlers = useGameHandlers({ solo, multi, playerName, joinCode, maxPlayers, totalRounds, gameMode, setScreen, setError, setLoading });
|
2026-04-10 15:43:07 +02:00
|
|
|
|
2026-04-10 16:47:13 +02:00
|
|
|
return (
|
|
|
|
|
<ScreenRouter
|
|
|
|
|
screen={screen} setScreen={setScreen} session={session}
|
|
|
|
|
solo={solo} multi={multi} handlers={handlers}
|
|
|
|
|
playerName={playerName} setPlayerName={setPlayerName}
|
|
|
|
|
joinCode={joinCode} setJoinCode={setJoinCode}
|
2026-04-11 13:47:05 +02:00
|
|
|
maxPlayers={maxPlayers} setMaxPlayers={setMaxPlayers}
|
|
|
|
|
totalRounds={totalRounds} setTotalRounds={setTotalRounds}
|
2026-04-11 21:58:35 +02:00
|
|
|
gameMode={gameMode} setGameMode={setGameMode}
|
2026-04-10 16:45:57 +02:00
|
|
|
error={error} setError={setError} loading={loading}
|
2026-04-10 16:47:13 +02:00
|
|
|
showAuth={showAuth} setShowAuth={setShowAuth}
|
2026-04-10 16:45:57 +02:00
|
|
|
/>
|
|
|
|
|
);
|
2026-04-10 11:46:43 +02:00
|
|
|
}
|