From 28407b0f058d3c7124d9143dcc2aca33fc59575c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Mon, 8 Apr 2024 19:24:49 -0500 Subject: [PATCH] feat: universal crew skills --- src/app/tools/compare/page.tsx | 68 ++++++++++++++++++++-- src/core/blitzkrieg/tankToCompareMember.ts | 5 -- src/stores/compare.ts | 3 +- 3 files changed, 65 insertions(+), 11 deletions(-) diff --git a/src/app/tools/compare/page.tsx b/src/app/tools/compare/page.tsx index 6714f17ac..ea4271c24 100644 --- a/src/app/tools/compare/page.tsx +++ b/src/app/tools/compare/page.tsx @@ -31,6 +31,7 @@ import { asset } from '../../../core/blitzkrieg/asset'; import { availableProvisions } from '../../../core/blitzkrieg/availableProvisions'; import { checkConsumableProvisionInclusivity } from '../../../core/blitzkrieg/checkConsumableProvisionInclusivity'; import { consumableDefinitions } from '../../../core/blitzkrieg/consumableDefinitions'; +import { createDefaultSkills } from '../../../core/blitzkrieg/createDefaultSkills'; import { equipmentDefinitions } from '../../../core/blitzkrieg/equipmentDefinitions'; import { modelDefinitions } from '../../../core/blitzkrieg/modelDefinitions'; import { provisionDefinitions } from '../../../core/blitzkrieg/provisionDefinitions'; @@ -68,12 +69,14 @@ export default function Page() { const awaitedEquipmentDefinitions = use(equipmentDefinitions); const awaitedProvisionDefinitions = use(provisionDefinitions); const deltaMode = useComparePersistent((state) => state.deltaMode); + const crewSkills = useCompareTemporary((state) => state.crewSkills); const stats = useMemo( () => members.map((item) => tankCharacteristics( { ...item, + crewSkills, stockEngine: item.tank.engines[0], stockGun: item.tank.turrets[0].guns[0], stockTrack: item.tank.tracks[0], @@ -123,11 +126,16 @@ export default function Page() { tankToCompareMember( awaitedTankDefinitions[id], awaitedProvisionDefinitions, - awaitedSkillDefinitions, ), ); }); } + + if (Object.keys(crewSkills).length === 0) { + mutateCompareTemporary((draft) => { + draft.crewSkills = createDefaultSkills(awaitedSkillDefinitions); + }); + } }, []); function Row({ @@ -376,7 +384,6 @@ export default function Page() { tankToCompareMember( tank, awaitedProvisionDefinitions, - awaitedSkillDefinitions, ), ); draft.sorting = undefined; @@ -390,7 +397,6 @@ export default function Page() { tankToCompareMember( tank, awaitedProvisionDefinitions, - awaitedSkillDefinitions, ), ), ); @@ -453,7 +459,60 @@ export default function Page() { - + + + + + + + + + ඞ + + + + {members.map( ( @@ -487,7 +546,6 @@ export default function Page() { gun, ), ); - const modules = { turret, gun, engine, chassis: track }; return ( diff --git a/src/core/blitzkrieg/tankToCompareMember.ts b/src/core/blitzkrieg/tankToCompareMember.ts index 3a5b26362..6773f2d04 100644 --- a/src/core/blitzkrieg/tankToCompareMember.ts +++ b/src/core/blitzkrieg/tankToCompareMember.ts @@ -1,20 +1,15 @@ import { uniqueId } from 'lodash'; import { CompareMember } from '../../stores/compare'; -import { createDefaultSkills } from './createDefaultSkills'; import { ProvisionDefinitions } from './provisionDefinitions'; -import { SkillDefinitions } from './skillDefinitions'; import { TankDefinition } from './tankDefinitions'; import { tankToDuelMember } from './tankToDuelMember'; export function tankToCompareMember( tank: TankDefinition, provisionDefinitions: ProvisionDefinitions, - skillDefinitions: SkillDefinitions, ) { return { ...tankToDuelMember(tank, provisionDefinitions), - - crewSkills: createDefaultSkills(skillDefinitions), key: uniqueId(), } satisfies CompareMember; } diff --git a/src/stores/compare.ts b/src/stores/compare.ts index 54b959803..b3e4046e9 100644 --- a/src/stores/compare.ts +++ b/src/stores/compare.ts @@ -6,10 +6,10 @@ import { DuelMember } from './duel'; export interface CompareMember extends DuelMember { key: string; - crewSkills: Record; } export interface CompareTemporary { + crewSkills: Record; members: CompareMember[]; sorting?: { direction: 'ascending' | 'descending'; @@ -23,6 +23,7 @@ export interface ComparePersistent { } export const useCompareTemporary = create()(() => ({ + crewSkills: {}, members: [], }));