import { TankDefinition, formatCompact } from '@blitzkit/core'; import { Table } from '@radix-ui/themes'; import { memo } from 'react'; import { awaitableAverageDefinitions } from '../../core/awaitables/averageDefinitions'; import { useAveragesExclusionRatio } from '../../hooks/useAveragesExclusionRatio'; import { useLocale } from '../../hooks/useLocale'; import { Performance } from '../../stores/performance'; import { TankRowHeaderCell } from '../TankRowHeaderCell'; interface TankRowProps { tank: TankDefinition; } const averageDefinitions = await awaitableAverageDefinitions; export const TankRow = memo( ({ tank }) => { const averages = averageDefinitions.averages[tank.id]; const ratio = useAveragesExclusionRatio(); const playerCountPeriod = Performance.use( (state) => state.playerCountPeriod, ); const { locale } = useLocale(); return ( {((averages.mu.wins / averages.mu.battles) * 100).toFixed(1)}% {formatCompact( locale, Math.round(ratio * averages.samples[playerCountPeriod]), )} {Math.round( averages.mu.damage_dealt / averages.mu.battles, ).toLocaleString(locale)} {Math.round( (averages.mu.survived_battles / averages.mu.battles) * 100, )} % {Math.round(averages.mu.xp / averages.mu.battles).toLocaleString( locale, )} {(averages.mu.frags / averages.mu.battles).toFixed(2)} {(averages.mu.spotted / averages.mu.battles).toFixed(2)} {Math.round((averages.mu.hits / averages.mu.shots) * 100)}% {(averages.mu.shots / averages.mu.battles).toFixed(1)} {(averages.mu.hits / averages.mu.battles).toFixed(1)} {(averages.mu.damage_dealt / averages.mu.damage_received).toFixed(2)} {Math.round( averages.mu.damage_received / averages.mu.battles, ).toLocaleString(locale)} {(averages.mu.capture_points / averages.mu.battles).toFixed(2)} ); }, (prev, next) => prev.tank.id === next.tank.id, );