From 391990676f1338034370b502be90e1196e0c6f3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Fri, 26 Apr 2024 12:34:59 -0500 Subject: [PATCH] feat: wn8 and labels --- src/commands/replay.tsx | 118 +++++++++++++++++++++++++++- src/core/statistics/calculateWN8.ts | 12 ++- 2 files changed, 127 insertions(+), 3 deletions(-) diff --git a/src/commands/replay.tsx b/src/commands/replay.tsx index 70af61346..1cbec7f53 100644 --- a/src/commands/replay.tsx +++ b/src/commands/replay.tsx @@ -6,8 +6,10 @@ import { RenderConfiguration } from '../core/blitzkit/renderConfiguration'; import { tankDefinitions } from '../core/blitzkit/tankDefinitions'; import { TIER_ROMAN_NUMERALS } from '../core/blitzkit/tankDefinitions/constants'; import { tankIcon } from '../core/blitzkit/tankIcon'; +import { tankAverages } from '../core/blitzstars/tankAverages'; import buttonLink from '../core/discord/buttonLink'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; +import calculateWN8 from '../core/statistics/calculateWN8'; import { CommandRegistry } from '../events/interactionCreate'; import { theme } from '../stitches.config'; @@ -212,8 +214,10 @@ function stat(value: string | number, flex = 2) { async function playerListing( player: WotInspectorReplayPlayerData, protagonistTeam: boolean, + winningTeam: number, recordingPlayer = false, ) { + const awaitedTankAverages = await tankAverages; const awaitedTankDefinitions = await tankDefinitions; const tank = awaitedTankDefinitions[player.vehicle_descr]; const blockAccent = recordingPlayer ? '_amber' : ''; @@ -231,6 +235,18 @@ async function playerListing( )[0]; const totalHealth = turret.health + tank.health; const healthLeft = clamp(player.hitpoints_left / totalHealth, 0, 1); + const tankAveragesEntry = awaitedTankAverages[player.vehicle_descr]; + const wn8 = + tankAveragesEntry === undefined + ? -1 + : calculateWN8(tankAveragesEntry.all, { + battles: 1, + damage_dealt: player.damage_made, + dropped_capture_points: player.base_defend_points, + frags: player.enemies_destroyed, + spotted: player.enemies_spotted, + wins: winningTeam === player.team ? 1 : 0, + }); return (