import { asset } from '@blitzkit/core'; import { Flex, Heading, IconButton, Table } from '@radix-ui/themes'; import type { TankCharacteristics } from '../../core/blitzkit/tankCharacteristics'; import { CompareEphemeral } from '../../stores/compareEphemeral'; import { StickyColumnHeaderCell } from '../StickyColumnHeaderCell'; import { CompareRow } from './CompareRow'; import { CompareSectionTitle } from './CompareSectionTitle'; interface BodyProps { stats: TankCharacteristics[]; } export function Body({ stats }: BodyProps) { const members = CompareEphemeral.use((state) => state.members); const hasNonRegularGun = members.some( ({ gun }) => gun.gun_type!.$case !== 'regular', ); const mutateCompareEphemeral = CompareEphemeral.useMutation(); return ( <> Firepower {members.map(({ gun, shell, key }, index) => ( {gun.gun_type!.value.base.shells.map( (thisShell, shellIndex) => ( { mutateCompareEphemeral((draft) => { draft.members[index].shell = thisShell; }); }} > {thisShell.name} ), )} ))} stats.shellReload ?? stats.shellReloads!.reduce((a, b) => a + b, 0) / stats.shellReloads!.length } display={(stats) => stats.shellReload?.toFixed(2) ?? stats.shellReloads!.map((reload) => reload.toFixed(2)).join(', ') } deltaNominalDisplay={(delta) => delta.toFixed(2)} /> {hasNonRegularGun && ( <> )} {hasNonRegularGun && ( )} Maneuverability Survivability (stats.fireChance * 100).toFixed(0)} deltaNominalDisplay={(delta) => (delta * 100).toFixed(0)} /> (stats.camouflageStill * 100).toFixed(2)} deltaNominalDisplay={(delta) => (delta * 100).toFixed(2)} /> (stats.camouflageMoving * 100).toFixed(2)} deltaNominalDisplay={(delta) => (delta * 100).toFixed(2)} /> (stats.camouflageShootingStill * 100).toFixed(2)} deltaNominalDisplay={(delta) => (delta * 100).toFixed(2)} /> (stats.camouflageShootingMoving * 100).toFixed(2)} deltaNominalDisplay={(delta) => (delta * 100).toFixed(2)} /> (stats.camouflageCaughtOnFire * 100).toFixed(2)} deltaNominalDisplay={(delta) => (delta * 100).toFixed(2)} /> ); }