feat: crew

This commit is contained in:
TrèsAbhi committed 2024-02-16 10:20:20 -06:00
1 parent c128d8ab0c
commit 2a70602f7e
2 files changed
+22

No files matched your search

+15
View File
@@ -23,8 +23,10 @@ import {
import { ProvisionDefinitions } from '../../src/core/blitzkrieg/provisionDefinitions'; import { ProvisionDefinitions } from '../../src/core/blitzkrieg/provisionDefinitions';
import { superCompress } from '../../src/core/blitzkrieg/superCompress'; import { superCompress } from '../../src/core/blitzkrieg/superCompress';
import { import {
CrewMember,
GunDefinition, GunDefinition,
ShellType, ShellType,
TankDefinition,
TankDefinitionPrice, TankDefinitionPrice,
TankDefinitions, TankDefinitions,
Tier, Tier,
@@ -84,6 +86,7 @@ interface VehicleDefinitions {
still: number; still: number;
firePenalty: number; firePenalty: number;
}; };
crew: Record<CrewMember, string | string[]>;
speedLimits: { speedLimits: {
forward: number; forward: number;
backward: number; backward: number;
@@ -436,9 +439,21 @@ export async function definitions(production: boolean) {
hullArmor.spaced.push(armorId); 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] = { tankDefinitions[tankId] = {
id: tankId, id: tankId,
crew,
weight: tankDefinition.root.hull.weight, weight: tankDefinition.root.hull.weight,
health: tankDefinition.root.hull.maxHealth, health: tankDefinition.root.hull.maxHealth,
speed: { speed: {
+7
View File
@@ -13,9 +13,16 @@ export const SHELL_NAMES: Record<ShellType, string> = {
he: 'HE', he: 'HE',
}; };
export type CrewMember =
| 'commander'
| 'radioman'
| 'gunner'
| 'driver'
| 'loader';
export type TankDefinitions = Record<number, TankDefinition>; export type TankDefinitions = Record<number, TankDefinition>;
export interface TankDefinition { export interface TankDefinition {
id: number; id: number;
crew: { [crew in CrewMember]?: number };
health: number; health: number;
nation: string; nation: string;
name: string; name: string;