feat: start on final design

This commit is contained in:
TrèsAbhi committed 2024-03-24 22:06:48 -05:00
1 parent 298b89b227
commit afa0cfaeef
21 files changed
+178 -116

No files matched your search

+1 -12
View File
@@ -23,22 +23,11 @@ export interface AllStats {
dropped_capture_points: number;
}
export interface SupplementaryStatsRandom {
type: 'random';
export interface SupplementaryStats {
WN8?: number;
tier?: number;
}
export interface SupplementaryStatsRating {
type: 'rating';
score: number;
delta: number;
}
export type SupplementaryStats =
| SupplementaryStatsRandom
| SupplementaryStatsRating;
export interface ClanStats {
spotted: number;
max_frags_tank_id: number;
+3
View File
@@ -0,0 +1,3 @@
export function normalizeLeagueIcon(url: string) {
return url.startsWith('http') ? url : `https:${url}`;
}
@@ -1,3 +1,3 @@
export function emblemIdToURL(emblemId: number) {
export function emblemURL(emblemId: number) {
return `https://wotblitz-gc.gcdn.co/icons/clanEmblems1x/clan-icon-v2-${emblemId}.png`;
}
+15 -12
View File
@@ -1,18 +1,21 @@
import { RatingPlayer } from '../../commands/ratingLeaderboard';
import { RatingStats } from '../blitz/getAccountInfo';
import { BkrlComprehensive1Entry, BkrlMinimalEntry } from '../streams/bkrl';
import { BkrlSuperset1Entry } from '../streams/bkrl';
export function deltaBkrlBlitzStats(
a: BkrlComprehensive1Entry,
b: RatingStats,
a: BkrlSuperset1Entry,
b1: RatingStats,
b2: RatingPlayer,
) {
return {
battles: b.battles - a.battles,
damageDealt: b.damage_dealt - a.damageDealt,
damageReceived: b.damage_received - a.damageReceived,
hits: b.hits - a.hits,
kills: b.frags - a.kills,
shots: b.shots - a.shots,
survived: b.survived_battles - a.survived,
wins: b.wins - a.wins,
} satisfies Omit<BkrlComprehensive1Entry, keyof BkrlMinimalEntry>;
battles: b1.battles - a.battles,
damageDealt: b1.damage_dealt - a.damageDealt,
damageReceived: b1.damage_received - a.damageReceived,
hits: b1.hits - a.hits,
kills: b1.frags - a.kills,
shots: b1.shots - a.shots,
survived: b1.survived_battles - a.survived,
wins: b1.wins - a.wins,
score: b2.score - a.score,
} satisfies Omit<BkrlSuperset1Entry, 'id'>;
}
+2 -3
View File
@@ -1,5 +1,5 @@
import { TreeType } from '../../components/Tanks';
import { SupplementaryStatsRandom } from '../blitz/getAccountInfo';
import { SupplementaryStats } from '../blitz/getAccountInfo';
import { tankDefinitions } from '../blitzkrieg/tankDefinitions';
import { DiffedTankStats } from '../blitzstars/getStatsInPeriod';
import { tankAverages } from '../blitzstars/tankAverages';
@@ -51,7 +51,6 @@ export async function filterStats(
0,
);
const supplementary = {
type: 'random',
WN8:
filteredOrder.reduce<number>(
(accumulator, id) =>
@@ -70,7 +69,7 @@ export async function filterStats(
: accumulator,
0,
) / battlesOfTanksWithTankDefinition,
} satisfies SupplementaryStatsRandom;
} satisfies SupplementaryStats;
return { stats, supplementary, filteredOrder };
}
+8 -8
View File
@@ -3,7 +3,7 @@ import { ReadStream, WriteStream } from './buffer';
export enum BkrlFormat {
Minimal,
Comprehensive1,
Superset1,
}
export interface BkrlMinimalEntry {
@@ -11,7 +11,7 @@ export interface BkrlMinimalEntry {
score: number;
}
export interface BkrlComprehensive1Entry {
export interface BkrlSuperset1Entry {
id: number;
score: number;
@@ -34,8 +34,8 @@ export type BkrlDiscriminatedEntries =
entries: BkrlMinimalEntry[];
}
| {
format: BkrlFormat.Comprehensive1;
entries: BkrlComprehensive1Entry[];
format: BkrlFormat.Superset1;
entries: BkrlSuperset1Entry[];
};
export class BkrlReadStream extends ReadStream {
@@ -61,9 +61,9 @@ export class BkrlReadStream extends ReadStream {
};
}
case BkrlFormat.Comprehensive1: {
case BkrlFormat.Superset1: {
return {
format: BkrlFormat.Comprehensive1,
format: BkrlFormat.Superset1,
entries: times(
header.count,
() =>
@@ -82,7 +82,7 @@ export class BkrlReadStream extends ReadStream {
hits: this.uint32(),
kills: this.uint32(),
}) satisfies BkrlComprehensive1Entry,
}) satisfies BkrlSuperset1Entry,
),
};
}
@@ -123,7 +123,7 @@ export class BkrlWriteStream extends WriteStream {
break;
}
case BkrlFormat.Comprehensive1: {
case BkrlFormat.Superset1: {
discriminatedEntries.entries.forEach((entry) => {
this.uint32(entry.id);
this.uint16(entry.score);