import { h } from 'preact'; import { Screen } from '../ui/Layout'; import { Player1Step, Player2Step, Player3Step, GameTypeStep, BreakRuleStep, BreakOrderStep, RaceToStep } from '../NewGame'; import type { NewGameStep, NewGameData } from '../../types/game'; interface NewGameScreenProps { step: NewGameStep; data: NewGameData; playerHistory: string[]; onStepChange: (step: NewGameStep) => void; onDataChange: (data: Partial) => void; onCreateGame: (data: NewGameData) => void; onCancel: () => void; onShowValidation: (message: string) => void; } export default function NewGameScreen({ step, data, playerHistory, onStepChange, onDataChange, onCreateGame, onCancel, onShowValidation, }: NewGameScreenProps) { const handlePlayer1Next = (name: string) => { onDataChange({ player1: name }); onStepChange('player2'); }; const handlePlayer2Next = (name: string) => { onDataChange({ player2: name }); onStepChange('player3'); }; const handlePlayer3Next = (name: string) => { onDataChange({ player3: name }); onStepChange('gameType'); }; const handleGameTypeNext = (type: string) => { onDataChange({ gameType: type as any, // Type assertion for now, could be improved with proper validation raceTo: '8' }); onStepChange('raceTo'); }; const handleBreakRuleNext = (rule: 'winnerbreak' | 'wechselbreak') => { onDataChange({ breakRule: rule }); try { localStorage.setItem('lastBreakRule', rule); } catch {} onStepChange('breakOrder'); }; const handleBreakOrderNext = (first: number, second?: number) => { const finalData = { ...data, breakFirst: first, breakSecond: second ?? '' } as any; onDataChange({ breakFirst: first, breakSecond: second ?? '' }); try { localStorage.setItem('lastBreakFirst', String(first)); if (second) localStorage.setItem('lastBreakSecond', String(second)); } catch {} onCreateGame(finalData as any); }; const handleRaceToNext = (raceTo: string) => { const finalData = { ...data, raceTo }; // After race to, go to break rule selection onDataChange({ raceTo }); onStepChange('breakRule'); }; const handleStepBack = () => { switch (step) { case 'player2': onStepChange('player1'); break; case 'player3': onStepChange('player2'); break; case 'gameType': onStepChange('player3'); break; case 'raceTo': onStepChange('gameType'); break; case 'breakRule': onStepChange('raceTo'); break; case 'breakOrder': onStepChange('breakRule'); break; default: onCancel(); } }; return ( {step === 'player1' && ( )} {step === 'player2' && ( )} {step === 'player3' && ( )} {step === 'gameType' && ( )} {step === 'raceTo' && ( )} {step === 'breakRule' && ( )} {step === 'breakOrder' && ( )} ); }