diff --git a/src/components/App.jsx b/src/components/App.jsx index 7f5c82d..469e0bd 100644 --- a/src/components/App.jsx +++ b/src/components/App.jsx @@ -2,7 +2,7 @@ import { h } from 'preact'; import { useState, useEffect, useCallback } from 'preact/hooks'; import GameList from './GameList.jsx'; import GameDetail from './GameDetail.jsx'; -import NewGame from './NewGame.jsx'; +import { Player1Step, Player2Step } from './NewGame.jsx'; import Modal from './Modal.jsx'; import ValidationModal from './ValidationModal.jsx'; import GameCompletionModal from './GameCompletionModal.jsx'; @@ -23,6 +23,8 @@ const App = () => { const [validation, setValidation] = useState({ open: false, message: '' }); const [completionModal, setCompletionModal] = useState({ open: false, game: null }); const [filter, setFilter] = useState('all'); + const [newGameStep, setNewGameStep] = useState(null); + const [newGameData, setNewGameData] = useState({ player1: '', player2: '', player3: '', gameType: '', raceTo: '' }); // Load games from localStorage on mount useEffect(() => { @@ -55,6 +57,8 @@ const App = () => { const showNewGame = useCallback(() => { setScreen('new-game'); setCurrentGameId(null); + setNewGameStep('player1'); + setNewGameData({ player1: '', player2: '', player3: '', gameType: '', raceTo: '' }); }, []); const showGameDetail = useCallback((id) => { setCurrentGameId(id); @@ -134,6 +138,39 @@ const App = () => { setValidation({ open: false, message: '' }); }, []); + // Step handlers + const handlePlayer1Next = (name) => { + setNewGameData(data => ({ ...data, player1: name })); + setNewGameStep('player2'); + }; + const handlePlayer2Next = (name) => { + setNewGameData(data => ({ ...data, player2: name })); + setNewGameStep('player3'); + }; + // Placeholder handlers for further steps + const handlePlayer3Next = (name) => { + setNewGameData(data => ({ ...data, player3: name })); + setNewGameStep('gameType'); + }; + const handleGameTypeNext = (type) => { + setNewGameData(data => ({ ...data, gameType: type })); + setNewGameStep('raceTo'); + }; + const handleRaceToNext = (raceTo) => { + setNewGameData(data => ({ ...data, raceTo })); + // Finalize game creation here + // For now, just go back to game list + setScreen('game-list'); + setNewGameStep(null); + setNewGameData({ player1: '', player2: '', player3: '', gameType: '', raceTo: '' }); + }; + + const handleCancelNewGame = useCallback(() => { + setScreen('game-list'); + setNewGameStep(null); + setNewGameData({ player1: '', player2: '', player3: '', gameType: '', raceTo: '' }); + }, []); + return (