From 2a70602f7e263c9636b5498e24c3a0461a08fbbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Fri, 16 Feb 2024 10:20:20 -0600 Subject: [PATCH] feat: crew --- scripts/buildAssets/definitions.ts | 15 +++++++++++++++ src/core/blitzkrieg/tankDefinitions.ts | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/scripts/buildAssets/definitions.ts b/scripts/buildAssets/definitions.ts index d150c36c0..5ad93e806 100644 --- a/scripts/buildAssets/definitions.ts +++ b/scripts/buildAssets/definitions.ts @@ -23,8 +23,10 @@ import { import { ProvisionDefinitions } from '../../src/core/blitzkrieg/provisionDefinitions'; import { superCompress } from '../../src/core/blitzkrieg/superCompress'; import { + CrewMember, GunDefinition, ShellType, + TankDefinition, TankDefinitionPrice, TankDefinitions, Tier, @@ -84,6 +86,7 @@ interface VehicleDefinitions { still: number; firePenalty: number; }; + crew: Record; speedLimits: { forward: number; backward: number; @@ -436,9 +439,21 @@ export async function definitions(production: boolean) { hullArmor.spaced.push(armorId); } }); + const crew: TankDefinition['crew'] = {}; + + Object.entries(tankDefinition.root.crew).forEach(([key, value]) => { + if (!(key in crew)) crew[key as CrewMember] = 0; + + if (typeof value === 'string') { + crew[key as CrewMember]!++; + } else { + crew[key as CrewMember]! += value.length; + } + }); tankDefinitions[tankId] = { id: tankId, + crew, weight: tankDefinition.root.hull.weight, health: tankDefinition.root.hull.maxHealth, speed: { diff --git a/src/core/blitzkrieg/tankDefinitions.ts b/src/core/blitzkrieg/tankDefinitions.ts index 84e3f1860..155b503f8 100644 --- a/src/core/blitzkrieg/tankDefinitions.ts +++ b/src/core/blitzkrieg/tankDefinitions.ts @@ -13,9 +13,16 @@ export const SHELL_NAMES: Record = { he: 'HE', }; +export type CrewMember = + | 'commander' + | 'radioman' + | 'gunner' + | 'driver' + | 'loader'; export type TankDefinitions = Record; export interface TankDefinition { id: number; + crew: { [crew in CrewMember]?: number }; health: number; nation: string; name: string;