import { DropdownMenu, Flex } from '@radix-ui/themes'; import { useState } from 'react'; import { EngineDefinition, GunDefinition, ShellDefinition, TankDefinition, TrackDefinition, TurretDefinition, } from '../core/blitzkit/tankDefinitions'; import { TIER_ROMAN_NUMERALS } from '../core/blitzkit/tankDefinitions/constants'; import { ModuleButton } from './ModuleButtons/ModuleButton'; interface ModuleManagerProps { tank: TankDefinition; turret: TurretDefinition; gun: GunDefinition; shell: ShellDefinition; engine: EngineDefinition; track: TrackDefinition; onChange?: (modules: { turret: TurretDefinition; gun: GunDefinition; engine: EngineDefinition; track: TrackDefinition; }) => void; } export function ModuleManager({ tank, onChange, ...modules }: ModuleManagerProps) { const [turretMenuOpen, setTurretMenuOpen] = useState(false); const [gunMenuOpen, setGunMenuOpen] = useState(false); const [engineMenuOpen, setEngineMenuOpen] = useState(false); const [trackMenuOpen, setTrackMenuOpen] = useState(false); return ( setTurretMenuOpen(true)} />
{[...tank.turrets].reverse().map((turret) => { return ( { const draft = { ...modules }; draft.turret = turret; draft.gun = draft.turret.guns.at(-1)!; draft.shell = draft.gun.shells[0]; onChange?.(draft); setTurretMenuOpen(false); }} > {' '} {turret.name} ); })} setGunMenuOpen(true)} />
{[...modules.turret.guns].reverse().map((gun) => { return ( { const draft = { ...modules }; draft.gun = gun; draft.shell = draft.gun.shells[0]; onChange?.(draft); setGunMenuOpen(false); }} > {' '} {gun.name} ); })} setEngineMenuOpen(true)} />
{[...tank.engines].reverse().map((engine) => { return ( { const draft = { ...modules }; draft.engine = engine; onChange?.(draft); setEngineMenuOpen(false); }} > {' '} {engine.name} ); })} setTrackMenuOpen(true)} />
{[...tank.tracks].reverse().map((track) => { return ( { const draft = { ...modules }; draft.track = track; onChange?.(draft); setTrackMenuOpen(false); }} > {' '} {track.name} ); })} ); }