import { RotateCcw, StepBack, StepForward } from "lucide-react"; import { type MainGameState, type MissionStep, useGameStore, } from "@/managers/stores/useGameStore"; const MAIN_STATES: MainGameState[] = [ "intro", "bike", "pylone", "ferme", "outro", ]; const MISSION_STEPS: MissionStep[] = [ "locked", "waiting", "inspected", "fragmented", "scanning", "repairing", "reassembling", "done", ]; function toPascalCase(value: string): string { return value .split(/[-_\s]+/) .filter(Boolean) .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) .join(""); } export function GameStateDebugPanel(): React.JSX.Element { const mainState = useGameStore((state) => state.mainState); const detail = useGameStore((state) => { switch (state.mainState) { case "intro": return state.intro.hasCompleted ? "completed" : "waiting"; case "bike": return state.bike.currentStep; case "pylone": return state.pylone.currentStep; case "ferme": return state.ferme.currentStep; case "outro": return state.outro.hasStarted ? "started" : "waiting"; } }); const setMainState = useGameStore((state) => state.setMainState); const setIntroState = useGameStore((state) => state.setIntroState); const setBikeState = useGameStore((state) => state.setBikeState); const setPyloneState = useGameStore((state) => state.setPyloneState); const setFermeState = useGameStore((state) => state.setFermeState); const setOutroState = useGameStore((state) => state.setOutroState); const advanceGameState = useGameStore((state) => state.advanceGameState); const rewindGameState = useGameStore((state) => state.rewindGameState); const resetGame = useGameStore((state) => state.resetGame); const subStateOptions = mainState === "intro" ? ["waiting", "completed"] : mainState === "outro" ? ["waiting", "started"] : MISSION_STEPS; function setSubState(nextSubState: string): void { if (mainState === "intro") { setIntroState({ hasCompleted: nextSubState === "completed" }); return; } if (mainState === "bike") { setBikeState({ currentStep: nextSubState as MissionStep }); return; } if (mainState === "pylone") { setPyloneState({ currentStep: nextSubState as MissionStep }); return; } if (mainState === "ferme") { setFermeState({ currentStep: nextSubState as MissionStep }); return; } setOutroState({ hasStarted: nextSubState === "started" }); } return (

Game State

Main state {toPascalCase(mainState)}
{MAIN_STATES.map((state) => ( ))}
Sub state {toPascalCase(detail)}
{subStateOptions.map((subState) => ( ))}
); }