diff --git a/.vscode/settings.json b/.vscode/settings.json index eb453d871..6cfc450ba 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,8 +17,6 @@ "astrojs", "astrolib", "atgm", - "Autoloader", - "Autoreloader", "AYUV", "battleresults", "bbox", diff --git a/packages/website-ue/src/constants/characteristicsOrder.ts b/packages/website-ue/src/constants/characteristicsOrder.ts index 9348e88b3..9f1799f9f 100644 --- a/packages/website-ue/src/constants/characteristicsOrder.ts +++ b/packages/website-ue/src/constants/characteristicsOrder.ts @@ -10,12 +10,75 @@ export enum CharacteristicsGroup { type CharacteristicsOrder = { group: CharacteristicsGroup; + characteristics: { + name: string; + value( + get: (name: TankAttributeChange_AttributeName) => number + ): number | string | null; + }[]; +}[]; + +export const characteristicsOrder: CharacteristicsOrder = [ + { + group: CharacteristicsGroup.Firepower, + + characteristics: [ + { + name: "gun_type", + + value(get) { + const isPump = get( + TankAttributeChange_AttributeName.ATTRIBUTE_NAME_IS_PUMP + ); + + if (isPump === 1) return "auto_reloader"; + + const clipSize = get( + TankAttributeChange_AttributeName.ATTRIBUTE_NAME_CLIP_SIZE + ); + + if (clipSize === 1) return "regular"; + + return "auto_loader"; + }, + }, + + { + name: "dpm", + + value(get) { + return -1; + }, + }, + + { + name: "clipping_potential", + + value(get) { + const clipSize = get( + TankAttributeChange_AttributeName.ATTRIBUTE_NAME_CLIP_SIZE + ); + + if (clipSize === 1) return null; + + // const damage + + return -1; + }, + }, + ], + }, +]; + +type _CharacteristicsOrder = { + group: CharacteristicsGroup; + attributes: { name: TankAttributeChange_AttributeName; }[]; }[]; -export const characteristicsOrder: CharacteristicsOrder = [ +export const _characteristicsOrder: _CharacteristicsOrder = [ { group: CharacteristicsGroup.Firepower, @@ -257,7 +320,7 @@ if (import.meta.env.DEV) { continue; } - const isImplemented = characteristicsOrder.some((group) => + const isImplemented = _characteristicsOrder.some((group) => group.attributes.some((attribute) => attribute.name === name) ); diff --git a/packages/website-ue/src/core/blitz/aggregateAttributes.ts b/packages/website-ue/src/core/blitz/aggregateAttributes.ts index c3c598114..62af88272 100644 --- a/packages/website-ue/src/core/blitz/aggregateAttributes.ts +++ b/packages/website-ue/src/core/blitz/aggregateAttributes.ts @@ -5,9 +5,13 @@ import { } from "@protos/blitz_static_tank_upgrade_single_stage"; import { times } from "lodash-es"; +export type AggregateAttributes = Partial< + Record +>; + function patch( changes: TankAttributeChange[], - attributes: Partial> + attributes: AggregateAttributes ) { for (const { attribute_name, value, modifier } of changes) { switch (modifier) { @@ -41,8 +45,7 @@ export function aggregateAttributes( stages: TankAttributeChange[][], stage: number ) { - const attributes: Partial> = - {}; + const attributes: AggregateAttributes = {}; patch(base, attributes); times(stage, (index) => patch(stages[index], attributes)); diff --git a/packages/website-ue/src/pages/api/tanks/characteristics/order.json.ts b/packages/website-ue/src/pages/api/tanks/characteristics/order.json.ts index 8be0c650d..4eea9d3ba 100644 --- a/packages/website-ue/src/pages/api/tanks/characteristics/order.json.ts +++ b/packages/website-ue/src/pages/api/tanks/characteristics/order.json.ts @@ -1,5 +1,5 @@ -import { characteristicsOrder } from "../../../../constants/characteristicsOrder"; +import { _characteristicsOrder } from "../../../../constants/characteristicsOrder"; export function GET() { - return Response.json(characteristicsOrder); + return Response.json(_characteristicsOrder); } diff --git a/packages/website-ue/src/pages/tanks/[slug]/_index.tsx b/packages/website-ue/src/pages/tanks/[slug]/_index.tsx index 84bc47c30..8bfd186be 100644 --- a/packages/website-ue/src/pages/tanks/[slug]/_index.tsx +++ b/packages/website-ue/src/pages/tanks/[slug]/_index.tsx @@ -3,7 +3,7 @@ import { times } from "lodash-es"; import { Suspense, useMemo } from "react"; import { CharacteristicsGroup, - characteristicsOrder, + _characteristicsOrder, } from "../../../constants/characteristicsOrder"; import { api } from "../../../core/api/dynamic"; import { aggregateAttributes } from "../../../core/blitz/aggregateAttributes"; @@ -53,7 +53,7 @@ function Content({ id }: { id: string }) { ))} - {characteristicsOrder.map((group) => ( + {_characteristicsOrder.map((group) => ( <>

{CharacteristicsGroup[group.group]}