diff --git a/src/app/tools/compare/page.tsx b/src/app/tools/compare/page.tsx index 42ce1836e..009def6b7 100644 --- a/src/app/tools/compare/page.tsx +++ b/src/app/tools/compare/page.tsx @@ -15,14 +15,12 @@ import PageWrapper from '../../../components/PageWrapper'; import { equipmentDefinitions } from '../../../core/blitzkrieg/equipmentDefinitions'; import { modelDefinitions } from '../../../core/blitzkrieg/modelDefinitions'; import { provisionDefinitions } from '../../../core/blitzkrieg/provisionDefinitions'; +import { skillDefinitions } from '../../../core/blitzkrieg/skillDefinitions'; import { tankCharacteristics } from '../../../core/blitzkrieg/tankCharacteristics'; import { tankDefinitions } from '../../../core/blitzkrieg/tankDefinitions'; import { tankIcon } from '../../../core/blitzkrieg/tankIcon'; import { tankToCompareMember } from '../../../core/blitzkrieg/tankToCompareMember'; -import mutateCompare, { - CompareMember, - useCompare, -} from '../../../stores/compare'; +import mutateCompare, { useCompare } from '../../../stores/compare'; import { TankSearch } from '../tankopedia/components/TankSearch'; import { TankControl } from './components/TankControl'; @@ -30,6 +28,7 @@ export default function Page() { const pathname = usePathname(); const router = useRouter(); const awaitedTankDefinitions = use(tankDefinitions); + const awaitedSkillDefinitions = use(skillDefinitions); const searchParams = useSearchParams(); const members = useCompare((state) => state.members); const [addTankDialogOpen, setAddTankDialogOpen] = useState(false); @@ -87,11 +86,11 @@ export default function Page() { draft.members = tanksParam .split(',') .map(Number) - .map( - (id) => - tankToCompareMember( - awaitedTankDefinitions[id], - ) satisfies CompareMember, + .map((id) => + tankToCompareMember( + awaitedTankDefinitions[id], + awaitedSkillDefinitions, + ), ); }); } @@ -147,7 +146,10 @@ export default function Page() { textAlign: 'center', }} color={ - index === 0 || value === undefined || values[0] === undefined + index === 0 || + value === undefined || + values[0] === undefined || + value > values[0] ? undefined : ( deltaType === 'higherIsBetter' @@ -205,7 +207,9 @@ export default function Page() { compact onSelect={(tank) => { mutateCompare((draft) => { - draft.members.push(tankToCompareMember(tank)); + draft.members.push( + tankToCompareMember(tank, awaitedSkillDefinitions), + ); }); setAddTankDialogOpen(false); @@ -309,17 +313,41 @@ export default function Page() { value="dispersion" display={(stats) => stats.dispersion.toFixed(3)} /> - + stats.dispersionMoving.toFixed(3)} + /> stats.dispersionHullTraversing.toFixed(3)} /> stats.dispersionTurretTraversing.toFixed(3)} + /> + stats.dispersionShooting.toFixed(3)} + /> + stats.dispersionGunDamaged.toFixed(3)} + /> + stats.gunDepression.toFixed(1)} + /> + stats.gunElevation.toFixed(1)} /> - - diff --git a/src/core/blitzkrieg/tankToCompareMember.ts b/src/core/blitzkrieg/tankToCompareMember.ts index 97b6a27eb..0d969276a 100644 --- a/src/core/blitzkrieg/tankToCompareMember.ts +++ b/src/core/blitzkrieg/tankToCompareMember.ts @@ -1,12 +1,22 @@ import { CompareMember } from '../../stores/compare'; +import { SkillDefinitions } from './skillDefinitions'; import { TankDefinition } from './tankDefinitions'; import { tankToDuelMember } from './tankToDuelMember'; -export function tankToCompareMember(tank: TankDefinition) { +export function tankToCompareMember( + tank: TankDefinition, + skillDefinitions: SkillDefinitions, +) { const member = { ...tankToDuelMember(tank), crewSkills: {}, - } satisfies CompareMember; + } as CompareMember; + + Object.values(skillDefinitions.classes).forEach((skills) => { + skills.forEach((skill) => { + member.crewSkills[skill] = 0; + }); + }); return member; }