feat: integrated tank definitions

This commit is contained in:
TrèsAbhi committed 2023-12-14 22:19:01 -06:00
1 parent adb0bb2e69
commit 2aefe3f9e3
26 files changed
+475 -273

No files matched your search

+1 -1
View File
@@ -1,5 +1,5 @@
import { TreeTypeEnum } from '../../components/Tanks';
import { tankDefinitions } from '../blitzkrieg/definitions/tanks';
import { tankDefinitions } from '../blitzkrieg/tankDefinitions';
export default async function getTreeType(id: number) {
const entry = (await tankDefinitions)[id];
+1 -1
View File
@@ -2,7 +2,7 @@ import { go } from 'fuzzysort';
import {
tankDefinitions,
tanksDefinitionsArray,
} from '../blitzkrieg/definitions/tanks';
} from '../blitzkrieg/tankDefinitions';
import { UserError } from '../blitzkrieg/userError';
export default async function resolveTankId(tank: string | number) {
-18
View File
@@ -1,18 +0,0 @@
import { asset } from '../asset';
import { Tier } from './tanks';
export interface BlitzkriegGunDefinition {
id: number;
name: string;
tier: Tier;
pitch: [number, number];
shells: number[];
}
export type BlitzkriegGunDefinitions = Record<number, BlitzkriegGunDefinition>;
export const gunDefinitions = fetch(asset('definitions/guns.json'), {
cache: 'no-cache',
}).then(
async (response) => response.json() as Promise<BlitzkriegGunDefinitions>,
);
-26
View File
@@ -1,26 +0,0 @@
import { asset } from '../asset';
export type ShellType = 'ap' | 'ap_cr' | 'hc' | 'he';
export interface BlitzkriegShellDefinition {
id: number;
name: string;
speed: number;
damage: { armor: number; devices: number };
caliber: number;
normalization: number;
ricochet: number;
type: ShellType;
icon: string;
}
export type BlitzkriegShellDefinitions = Record<
number,
BlitzkriegShellDefinition
>;
export const shellDefinitions = fetch(asset('definitions/shells.json'), {
cache: 'no-cache',
}).then(
async (response) => response.json() as Promise<BlitzkriegShellDefinitions>,
);
@@ -1,21 +0,0 @@
import { asset } from '../asset';
import { Tier } from './tanks';
export interface BlitzkriegTurretDefinition {
id: number;
name: string;
tier: Tier;
yaw: [number, number];
guns: number[];
}
export type BlitzkriegTurretDefinitions = Record<
number,
BlitzkriegTurretDefinition
>;
export const turretDefinitions = fetch(asset('definitions/turrets.json'), {
cache: 'no-cache',
}).then(
async (response) => response.json() as Promise<BlitzkriegTurretDefinitions>,
);
+1 -5
View File
@@ -1,11 +1,7 @@
import { TREE_TYPE_NAMES } from '../../components/Tanks';
import { encyclopediaInfo } from '../blitz/encyclopediaInfo';
import { StatFilters } from '../statistics/filterStats';
import {
TIER_ROMAN_NUMERALS,
Tier,
tankDefinitions,
} from './definitions/tanks';
import { TIER_ROMAN_NUMERALS, Tier, tankDefinitions } from './tankDefinitions';
export async function filtersToDescription({
nation,
@@ -1,8 +1,51 @@
import { deburr } from 'lodash';
import { TankType, TreeTypeString } from '../../../components/Tanks';
import { asset } from '../asset';
import { TankType, TreeTypeString } from '../../components/Tanks';
import { asset } from './asset';
export interface BlitzkriegTankDefinition {
export type ShellType = 'ap' | 'ap_cr' | 'hc' | 'he';
export interface ShellDefinition {
id: number;
name: string;
speed: number;
damage: { armor: number; devices: number };
caliber: number;
normalization: number;
ricochet: number;
type: ShellType;
icon: string;
}
export type GunDefinition = {
id: number;
name: string;
tier: Tier;
pitch: [number, number];
shells: ShellDefinition[];
} & (
| {
type: 'regular';
reload: number;
}
| {
type: 'auto_loader';
reload: number;
interClip: number;
count: number;
}
| {
type: 'auto_reloader';
reload: number[];
interClip: number;
count: number;
}
);
export interface TurretDefinition {
id: number;
name: string;
tier: Tier;
yaw: [number, number];
guns: GunDefinition[];
}
export interface TankDefinition {
id: number;
nation: string;
name: string;
@@ -10,23 +53,18 @@ export interface BlitzkriegTankDefinition {
tier: Tier;
type: TankType;
testing?: boolean;
turrets: number[];
turrets: TurretDefinition[];
}
export type BlitzkriegTankDefinitions = Record<
number,
BlitzkriegTankDefinition
>;
export type TankDefinitions = Record<number, TankDefinition>;
export const tankDefinitions = fetch(asset('definitions/tanks.json'), {
cache: 'no-cache',
}).then(
async (response) => response.json() as Promise<BlitzkriegTankDefinitions>,
);
}).then(async (response) => response.json() as Promise<TankDefinitions>);
const entries = new Promise<BlitzkriegTankDefinition[]>(async (resolve) => {
const entries = new Promise<TankDefinition[]>(async (resolve) => {
resolve(Object.entries(await tankDefinitions).map(([, entry]) => entry));
});
export const tanksDefinitionsArray = new Promise<BlitzkriegTankDefinition[]>(
export const tanksDefinitionsArray = new Promise<TankDefinition[]>(
async (resolve) => {
resolve((await entries).map((entry) => entry));
},
+1 -1
View File
@@ -1,5 +1,5 @@
import { asset } from './asset';
export function tankIcon(id: number, size: 'big' | 'small' = 'big') {
return asset(`icons/${size}/${id}.webp`);
return asset(`icons/tanks/${size}/${id}.webp`);
}
+1 -1
View File
@@ -1,6 +1,6 @@
import { AllStats } from '../blitz/getAccountInfo';
import { context } from '../blitzkrieg/context';
import { tankDefinitions } from '../blitzkrieg/definitions/tanks';
import { tankDefinitions } from '../blitzkrieg/tankDefinitions';
export interface SpecialStats {
winrate: number;
+1 -1
View File
@@ -4,7 +4,7 @@ import {
CacheType,
} from 'discord.js';
import { go } from 'fuzzysort';
import { tankNamesDiacritics } from '../blitzkrieg/definitions/tanks';
import { tankNamesDiacritics } from '../blitzkrieg/tankDefinitions';
import {
DISCORD_CHOICES_MAX_NAME_SIZE,
OVERFLOW_SUFFIX,
+1 -1
View File
@@ -1,5 +1,5 @@
import { TreeTypeString } from '../../components/Tanks';
import { tankDefinitions } from '../blitzkrieg/definitions/tanks';
import { tankDefinitions } from '../blitzkrieg/tankDefinitions';
import { DiffedTankStats } from '../blitzstars/getStatsInPeriod';
import { tankAverages } from '../blitzstars/tankAverages';
import calculateWN8 from './calculateWN8';
+1 -1
View File
@@ -1,6 +1,6 @@
import { TierWeightsRecord } from '../../components/TierWeights';
import { AllStats } from '../blitz/getAccountInfo';
import { tankDefinitions } from '../blitzkrieg/definitions/tanks';
import { tankDefinitions } from '../blitzkrieg/tankDefinitions';
export async function getTierWeights(
stats: Record<number, AllStats>,