import React, { useState, useEffect } from 'react'; import { Plus, Minus } from 'lucide-react'; interface Player { id: number; name: string; life: number; color: string; } const COLORS = ['white', 'blue', 'black', 'red', 'green']; export default function LifeCounter() { const [numPlayers, setNumPlayers] = useState(null); const [playerNames, setPlayerNames] = useState([]); const [players, setPlayers] = useState([]); const [setupComplete, setSetupComplete] = useState(false); useEffect(() => { if (numPlayers !== null) { setPlayers( Array.from({ length: numPlayers }, (_, i) => ({ id: i + 1, name: playerNames[i] || `Player ${i + 1}`, life: 20, color: COLORS[i % COLORS.length], })) ); } }, [numPlayers, playerNames]); const handleNumPlayersChange = (e: React.ChangeEvent) => { const newNumPlayers = parseInt(e.target.value, 10); setNumPlayers(newNumPlayers); setPlayerNames(Array(newNumPlayers).fill('')); }; const handleNameChange = (index: number, newName: string) => { const updatedNames = [...playerNames]; updatedNames[index] = newName; setPlayerNames(updatedNames); }; const updateLife = (playerId: number, change: number) => { setPlayers((prevPlayers) => prevPlayers.map((player) => player.id === playerId ? { ...player, life: player.life + change } : player ) ); }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); setSetupComplete(true); }; const renderSetupForm = () => (

Setup Players

{numPlayers !== null && Array.from({ length: numPlayers }, (_, i) => (
handleNameChange(i, e.target.value)} className="w-full px-4 py-2 bg-gray-800 border border-gray-700 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent text-white" placeholder={`Player ${i + 1} Name`} />
))} {numPlayers !== null && ( )}
); const renderLifeCounters = () => (
{players.map((player, index) => { const angle = (index / players.length) * 360; const rotation = 360 - angle; const x = 50 + 40 * Math.cos((angle - 90) * Math.PI / 180); const y = 50 + 40 * Math.sin((angle - 90) * Math.PI / 180); return (

{player.name}

{player.life}
); })}
); return (

Life Counter

{!setupComplete ? renderSetupForm() : renderLifeCounters()}
); }