From b5188331bd93086387e0c81906bc76e6f770bebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sun, 21 Apr 2024 12:17:33 -0500 Subject: [PATCH] feat: remove textual reference --- .../[id]/components/TextualReference.tsx | 32 ----------------- src/app/tools/tankopedia/[id]/page.tsx | 2 -- src/hooks/useEccentricity.ts | 35 +++++++++++++++++++ 3 files changed, 35 insertions(+), 34 deletions(-) delete mode 100644 src/app/tools/tankopedia/[id]/components/TextualReference.tsx create mode 100644 src/hooks/useEccentricity.ts diff --git a/src/app/tools/tankopedia/[id]/components/TextualReference.tsx b/src/app/tools/tankopedia/[id]/components/TextualReference.tsx deleted file mode 100644 index bede9a854..000000000 --- a/src/app/tools/tankopedia/[id]/components/TextualReference.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { Flex, Heading, Text } from '@radix-ui/themes'; -import { sumBy } from 'lodash'; -import { use, useMemo } from 'react'; -import { tankDefinitions } from '../../../../../core/blitzkrieg/tankDefinitions'; -import { useDuel } from '../../../../../stores/duel'; - -export function TextualReference() { - const awaitedTankDefinitions = use(tankDefinitions); - const tank = useDuel((state) => state.protagonist!.tank); - const tierTanks = useMemo( - () => - Object.values(awaitedTankDefinitions).filter( - ({ tier }) => tank.tier === tier, - ), - [tank.id], - ); - const averageDamage = - sumBy( - tierTanks, - (tank) => tank.turrets.at(-1)!.guns.at(-1)!.shells[0].damage.armor, - ) / tierTanks.length; - - console.log(averageDamage); - - return ( - - Textual reference - - - - ); -} diff --git a/src/app/tools/tankopedia/[id]/page.tsx b/src/app/tools/tankopedia/[id]/page.tsx index 318901404..63f127128 100644 --- a/src/app/tools/tankopedia/[id]/page.tsx +++ b/src/app/tools/tankopedia/[id]/page.tsx @@ -16,7 +16,6 @@ import { Modules } from './components/Characteristics/components/Modules'; import { Provisions } from './components/Characteristics/components/Provisions'; import { Skills } from './components/Characteristics/components/Skills'; import { TankSandbox } from './components/Model/TankSandbox'; -import { TextualReference } from './components/TextualReference'; import { Title } from './components/Title'; import { Videos } from './components/Videos'; @@ -113,7 +112,6 @@ export default function Page({ params }: { params: { id: string } }) { - )} diff --git a/src/hooks/useEccentricity.ts b/src/hooks/useEccentricity.ts new file mode 100644 index 000000000..a2a91e94f --- /dev/null +++ b/src/hooks/useEccentricity.ts @@ -0,0 +1,35 @@ +import { sumBy } from 'lodash'; +import { use, useMemo } from 'react'; +import { + TankDefinition, + tankDefinitions, +} from '../core/blitzkrieg/tankDefinitions'; +import { useDuel } from '../stores/duel'; + +export enum UseEccentricityMode { + Tier, + Class, +} + +export function useEccentricity(mode: UseEccentricityMode) { + const awaitedTankDefinitions = use(tankDefinitions); + const tank = useDuel((state) => state.protagonist!.tank); + const similarTanks = useMemo( + () => + Object.values(awaitedTankDefinitions).filter( + (tankB) => + tank.tier === tankB.tier && + (mode === UseEccentricityMode.Class + ? tank.class === tankB.class + : true), + ), + [tank.id], + ); + + function eccentricity(property: (tank: TankDefinition) => number) { + const average = sumBy(similarTanks, property) / similarTanks.length; + return property(tank) / average; + } + + return eccentricity; +}