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;
+}