mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-22 03:07:04 +02:00
feat: integrated tank definitions
This commit is contained in:
1 parent
adb0bb2e69
commit
2aefe3f9e3
26 files changed
+475
-273
No files matched your search
@@ -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];
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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>,
|
||||
);
|
||||
@@ -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,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,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,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;
|
||||
|
||||
@@ -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,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,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>,
|
||||
|
||||
Reference in new issue
Block a user