From ad57d284bbd01fbb6cfecbb3f97eb4a6b46fdf69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Thu, 4 Apr 2024 22:14:30 -0500 Subject: [PATCH] feat: more stats 3 --- src/app/tools/compare/page.tsx | 84 +++++++++++++++++-- .../components/Skills/index.tsx | 7 +- .../[id]/components/Characteristics/index.tsx | 14 ++-- src/core/blitzkrieg/createDefaultSkills.ts | 14 ++++ src/core/blitzkrieg/tankToCompareMember.ts | 15 +--- 5 files changed, 104 insertions(+), 30 deletions(-) create mode 100644 src/core/blitzkrieg/createDefaultSkills.ts diff --git a/src/app/tools/compare/page.tsx b/src/app/tools/compare/page.tsx index 009def6b7..69dc2ee0b 100644 --- a/src/app/tools/compare/page.tsx +++ b/src/app/tools/compare/page.tsx @@ -149,7 +149,7 @@ export default function Page() { index === 0 || value === undefined || values[0] === undefined || - value > values[0] + value === values[0] ? undefined : ( deltaType === 'higherIsBetter' @@ -223,12 +223,7 @@ export default function Page() { {members.length > 0 && ( - + @@ -348,6 +343,81 @@ export default function Page() { value="gunElevation" display={(stats) => stats.gunElevation.toFixed(1)} /> + + + + + stats.powerToWeightRatioHardTerrain.toFixed(1) + } + /> + + stats.powerToWeightRatioMediumTerrain.toFixed(1) + } + /> + + stats.powerToWeightRatioSoftTerrain.toFixed(1) + } + /> + + (stats.fireChance * 100).toFixed(0)} + /> + stats.viewRange.toFixed(0)} + /> + (stats.camouflageStill * 100).toFixed(0)} + /> + (stats.camouflageMoving * 100).toFixed(0)} + /> + + (stats.camouflageShootingStill * 100).toFixed(0) + } + /> + + (stats.camouflageShootingMoving * 100).toFixed(0) + } + /> + + (stats.camouflageCaughtOnFire * 100).toFixed(0) + } + /> + Math.max(...stats.tankSize)} + display={(stats) => + stats.tankSize + .map((tankSize) => tankSize.toFixed(1)) + .join(' x ') + } + /> diff --git a/src/app/tools/tankopedia/[id]/components/Characteristics/components/Skills/index.tsx b/src/app/tools/tankopedia/[id]/components/Characteristics/components/Skills/index.tsx index 9d8c5d47f..2a557c630 100644 --- a/src/app/tools/tankopedia/[id]/components/Characteristics/components/Skills/index.tsx +++ b/src/app/tools/tankopedia/[id]/components/Characteristics/components/Skills/index.tsx @@ -11,6 +11,7 @@ import { import { use } from 'react'; import { GenericTankComponentButton } from '../../../../../../../../components/ModuleButtons/GenericTankComponentButton'; import { asset } from '../../../../../../../../core/blitzkrieg/asset'; +import { createDefaultSkills } from '../../../../../../../../core/blitzkrieg/createDefaultSkills'; import { skillDefinitions } from '../../../../../../../../core/blitzkrieg/skillDefinitions'; import { Tier } from '../../../../../../../../core/blitzkrieg/tankDefinitions'; import { TIER_ROMAN_NUMERALS } from '../../../../../../../../core/blitzkrieg/tankDefinitions/constants'; @@ -27,11 +28,7 @@ export function Skills() { if (Object.keys(skillLevels).length === 0) { mutateTankopediaTemporary((draft) => { - Object.values(awaitedSkillDefinitions.classes).forEach((skills) => { - skills.forEach((skill) => { - draft.skills[skill] = permanentSkills.includes(skill) ? 7 : 0; - }); - }); + draft.skills = createDefaultSkills(awaitedSkillDefinitions); }); return null; diff --git a/src/app/tools/tankopedia/[id]/components/Characteristics/index.tsx b/src/app/tools/tankopedia/[id]/components/Characteristics/index.tsx index e1bc20432..3ef1b483e 100644 --- a/src/app/tools/tankopedia/[id]/components/Characteristics/index.tsx +++ b/src/app/tools/tankopedia/[id]/components/Characteristics/index.tsx @@ -408,7 +408,7 @@ export function Characteristics() { {stats.speedBackwards} - + {stats.enginePower} @@ -461,23 +461,23 @@ export function Characteristics() { {stats.viewRange} - + {stats.camouflageStill * 100} - + {stats.camouflageMoving * 100} - + {stats.camouflageShootingStill * 100} - + {stats.camouflageShootingMoving * 100} - + {stats.camouflageCaughtOnFire * 100} - {stats.tankSize.map((component) => component.toFixed(2)).join(' x ')} + {stats.tankSize.map((component) => component.toFixed(1)).join(' x ')} diff --git a/src/core/blitzkrieg/createDefaultSkills.ts b/src/core/blitzkrieg/createDefaultSkills.ts new file mode 100644 index 000000000..8b97e671a --- /dev/null +++ b/src/core/blitzkrieg/createDefaultSkills.ts @@ -0,0 +1,14 @@ +import { permanentSkills } from '../../app/tools/tankopedia/[id]/components/Characteristics/components/Skills/constants'; +import { SkillDefinitions } from './skillDefinitions'; + +export function createDefaultSkills(skillDefinitions: SkillDefinitions) { + const skills: Record = {}; + + Object.values(skillDefinitions.classes).forEach((tankSkills) => { + tankSkills.forEach((skill) => { + skills[skill] = permanentSkills.includes(skill) ? 7 : 0; + }); + }); + + return skills; +} diff --git a/src/core/blitzkrieg/tankToCompareMember.ts b/src/core/blitzkrieg/tankToCompareMember.ts index 0d969276a..818ca8d14 100644 --- a/src/core/blitzkrieg/tankToCompareMember.ts +++ b/src/core/blitzkrieg/tankToCompareMember.ts @@ -1,4 +1,5 @@ import { CompareMember } from '../../stores/compare'; +import { createDefaultSkills } from './createDefaultSkills'; import { SkillDefinitions } from './skillDefinitions'; import { TankDefinition } from './tankDefinitions'; import { tankToDuelMember } from './tankToDuelMember'; @@ -7,16 +8,8 @@ export function tankToCompareMember( tank: TankDefinition, skillDefinitions: SkillDefinitions, ) { - const member = { + return { ...tankToDuelMember(tank), - crewSkills: {}, - } as CompareMember; - - Object.values(skillDefinitions.classes).forEach((skills) => { - skills.forEach((skill) => { - member.crewSkills[skill] = 0; - }); - }); - - return member; + crewSkills: createDefaultSkills(skillDefinitions), + } satisfies CompareMember; }