import { useEffect, useRef } from 'react'; import { useGlobalSettings } from '../../../../Hooks/useGlobalSettings'; import { usePlayers } from '../../../../Hooks/usePlayers'; export const RandomKingSelectWrapper = () => { const { setRandomizingPlayer } = useGlobalSettings(); const randomIntervalRef = useRef(null); const prevRandomIndexRef = useRef(-1); const { settings, randomizingPlayer, setPreStartCompleted } = useGlobalSettings(); const { players, setPlayers } = usePlayers(); useEffect(() => { if ( players.length > 1 && settings.showStartingPlayer && randomizingPlayer ) { randomIntervalRef.current = setInterval(() => { let randomIndex: number; do { randomIndex = Math.floor(Math.random() * players.length); } while (randomIndex === prevRandomIndexRef.current); prevRandomIndexRef.current = randomIndex; setPlayers( players.map((p) => p.index === prevRandomIndexRef.current ? { ...p, isStartingPlayer: true, } : { ...p, isStartingPlayer: false, } ) ); }, 100); } const randomPlayerIndex = Math.floor(Math.random() * players.length); setPlayers( players.map((p) => p.index === randomPlayerIndex ? { ...p, isStartingPlayer: true, } : { ...p, isStartingPlayer: false, } ) ); return () => { if (randomIntervalRef.current) { clearInterval(randomIntervalRef.current); } }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [players.length, setPlayers, randomizingPlayer]); const gradientColors = players.map((player) => player.color).join(', '); return (
{ if (randomIntervalRef.current) { clearInterval(randomIntervalRef.current); randomIntervalRef.current = null; } setRandomizingPlayer(false); setPreStartCompleted(true); }} >

PRESS TO SELECT PLAYER

); };