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