From ed92440b94d10fc83cb3664f358cf55176168928 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sat, 1 Aug 2026 14:54:40 -0500 Subject: [PATCH] update (3) --- .../src/blitzkit/camouflageDefinitions.ts | 7 --- packages/core/src/blitzkit/index.ts | 1 + .../src/blitzkit/tankDefinitions/index.ts | 1 + packages/core/src/blitzkit/tankNames.ts | 9 ++-- .../website/src/components/TankCard/index.tsx | 10 ++-- .../components/TankSearch/components/Card.tsx | 4 +- .../TankSearch/components/FilterControl.tsx | 54 ++++++++----------- .../core/awaitables/consumableDefinitions.ts | 3 -- .../src/core/awaitables/modelDefinitions.ts | 3 -- .../core/awaitables/provisionDefinitions.ts | 3 -- .../src/core/awaitables/tankDefinitions.ts | 3 -- .../website/src/core/awaitables/tankNames.ts | 3 +- .../website/src/core/blitzkit/filterTank.ts | 48 ++++++++--------- .../[...locale]/performance/index.astro | 6 +-- 14 files changed, 61 insertions(+), 94 deletions(-) delete mode 100644 packages/core/src/blitzkit/camouflageDefinitions.ts create mode 100644 packages/core/src/blitzkit/tankDefinitions/index.ts delete mode 100644 packages/website/src/core/awaitables/consumableDefinitions.ts delete mode 100644 packages/website/src/core/awaitables/modelDefinitions.ts delete mode 100644 packages/website/src/core/awaitables/provisionDefinitions.ts delete mode 100644 packages/website/src/core/awaitables/tankDefinitions.ts diff --git a/packages/core/src/blitzkit/camouflageDefinitions.ts b/packages/core/src/blitzkit/camouflageDefinitions.ts deleted file mode 100644 index 20315860c..000000000 --- a/packages/core/src/blitzkit/camouflageDefinitions.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { fetchPB } from '../protobuf'; -import { CamouflageDefinitions } from '../protos'; -import { asset } from './asset'; - -export function fetchCamouflageDefinitions() { - return fetchPB(asset('definitions/camouflages.pb'), CamouflageDefinitions); -} diff --git a/packages/core/src/blitzkit/index.ts b/packages/core/src/blitzkit/index.ts index 184e360b5..88ba099ef 100644 --- a/packages/core/src/blitzkit/index.ts +++ b/packages/core/src/blitzkit/index.ts @@ -23,6 +23,7 @@ export * from "./romanize"; export * from "./sluggify"; export * from "./staticAsset"; export * from "./sum"; +export * from "./tankDefinitions"; export * from "./tankIcon"; export * from "./tankNames"; export * from "./unionBoundingBox"; diff --git a/packages/core/src/blitzkit/tankDefinitions/index.ts b/packages/core/src/blitzkit/tankDefinitions/index.ts new file mode 100644 index 000000000..b04bfcf75 --- /dev/null +++ b/packages/core/src/blitzkit/tankDefinitions/index.ts @@ -0,0 +1 @@ +export * from "./constants"; diff --git a/packages/core/src/blitzkit/tankNames.ts b/packages/core/src/blitzkit/tankNames.ts index d778ed33e..bb19c9597 100644 --- a/packages/core/src/blitzkit/tankNames.ts +++ b/packages/core/src/blitzkit/tankNames.ts @@ -1,13 +1,12 @@ +import { BlitzKitAPI } from "@blitzkit/core"; import locales from "@blitzkit/i18n/locales.json"; import { deburr } from "lodash-es"; import { I18nString } from "../protos"; -import { fetchCamouflageDefinitions } from "./camouflageDefinitions"; -import { fetchTankDefinitions } from "./tankDefinitions"; -export async function fetchTankNames() { +export async function fetchTankNames(api: BlitzKitAPI) { const [tankDefinitions, camouflageDefinitions] = await Promise.all([ - fetchTankDefinitions(), - fetchCamouflageDefinitions(), + api.tankDefinitions(), + api.camouflageDefinitions(), ]); const tankDefinitionsArray = Object.values(tankDefinitions.tanks); diff --git a/packages/website/src/components/TankCard/index.tsx b/packages/website/src/components/TankCard/index.tsx index 64eece530..6d3cfa96d 100644 --- a/packages/website/src/components/TankCard/index.tsx +++ b/packages/website/src/components/TankCard/index.tsx @@ -1,12 +1,8 @@ -import { - asset, - fetchTankDefinitions, - TankType, - type TankDefinition, -} from "@blitzkit/core"; +import { asset, TankType, type TankDefinition } from "@blitzkit/core"; import { Flex, Text, type TextProps } from "@radix-ui/themes"; import { uniq } from "lodash-es"; import { forwardRef, type ReactNode } from "react"; +import { api } from "../../core/blitzkit/api"; import { useLocale } from "../../hooks/useLocale"; import { TankopediaPersistent } from "../../stores/tankopediaPersistent"; import { classIcons } from "../ClassIcon"; @@ -21,7 +17,7 @@ type TankCardProps = TextProps & { noLink?: boolean; }; -const tankDefinitions = await fetchTankDefinitions(); +const tankDefinitions = await api.tankDefinitions(); export const TankCard = forwardRef( ( diff --git a/packages/website/src/components/TankSearch/components/Card.tsx b/packages/website/src/components/TankSearch/components/Card.tsx index 8eb75f918..97182487a 100644 --- a/packages/website/src/components/TankSearch/components/Card.tsx +++ b/packages/website/src/components/TankSearch/components/Card.tsx @@ -5,7 +5,7 @@ import { type TankDefinition, } from "@blitzkit/core"; import { useMemo } from "react"; -import { awaitableModelDefinitions } from "../../../core/awaitables/modelDefinitions"; +import { api } from "../../../core/blitzkit/api"; import { resolveReload } from "../../../core/blitzkit/resolveReload"; import { TankSort } from "../../../stores/tankopediaSort"; import { TankCard } from "../../TankCard"; @@ -15,7 +15,7 @@ interface TankSearchCardProps { onSelect?: (tank: TankDefinition) => void; } -const modelDefinitions = await awaitableModelDefinitions; +const modelDefinitions = await api.modelDefinitions(); export function TankSearchCard({ tank, onSelect }: TankSearchCardProps) { const by = TankSort.use((state) => state.by); diff --git a/packages/website/src/components/TankSearch/components/FilterControl.tsx b/packages/website/src/components/TankSearch/components/FilterControl.tsx index 645e8f73c..1451bda88 100644 --- a/packages/website/src/components/TankSearch/components/FilterControl.tsx +++ b/packages/website/src/components/TankSearch/components/FilterControl.tsx @@ -1,5 +1,4 @@ import { - asset, GunDefinition, ShellType, TANK_CLASSES, @@ -27,10 +26,7 @@ import { } from "@radix-ui/themes"; import { times } from "lodash-es"; import { Fragment, type ComponentProps, type ReactNode } from "react"; -import { awaitableConsumableDefinitions } from "../../../core/awaitables/consumableDefinitions"; -import { awaitableGameDefinitions } from "../../../core/awaitables/gameDefinitions"; -import { awaitableProvisionDefinitions } from "../../../core/awaitables/provisionDefinitions"; -import { awaitableTankDefinitions } from "../../../core/awaitables/tankDefinitions"; +import { api } from "../../../core/blitzkit/api"; import { useLocale } from "../../../hooks/useLocale"; import { App } from "../../../stores/app"; import { TankFilters, type CaseType } from "../../../stores/tankFilters"; @@ -43,10 +39,10 @@ import { ResearchedIcon } from "../../ResearchedIcon"; import { ScienceIcon } from "../../ScienceIcon"; import { ScienceOffIcon } from "../../ScienceOffIcon"; -const gameDefinitions = await awaitableGameDefinitions; -const consumableDefinitions = await awaitableConsumableDefinitions; -const provisionDefinitions = await awaitableProvisionDefinitions; -const tankDefinitions = await awaitableTankDefinitions; +const gameDefinitions = await api.gameDefinitions(); +const consumableDefinitions = await api.consumableDefinitions(); +const provisionDefinitions = await api.provisionDefinitions(); +const tankDefinitions = await api.tankDefinitions(); const gameModeRoleSets: Record> = {}; @@ -313,7 +309,7 @@ function NationsFilter() { width: "1.25em", height: "1.25em", }} - src={asset(`flags/circle/${nation}.webp`)} + src={`/api/flags/circle/${nation}.webp`} /> ))} @@ -350,9 +346,7 @@ function NationsFilter() { right="0" mr="-2" style={{ - backgroundImage: `url(${asset( - `flags/scratched/${nation}.webp`, - )})`, + backgroundImage: `url(${`/api/flags/scratched/${nation}.webp`})`, backgroundSize: "100%", backgroundRepeat: "no-repeat", backgroundPosition: "5rem center", @@ -685,11 +679,9 @@ function IndividualShellFilter({ {shells[index] !== null && ( )} @@ -720,11 +712,9 @@ function IndividualShellFilter({ color={selected ? undefined : "gray"} > @@ -893,7 +883,7 @@ function ConsumablesFilter() { height: "1.25em", objectFit: "contain", }} - src={asset(`icons/consumables/${consumable}.webp`)} + src={`/api/icons/consumables/${consumable}.webp`} /> ))} @@ -938,7 +928,7 @@ function ConsumablesFilter() { height: "1.25em", objectFit: "contain", }} - src={asset(`icons/consumables/${consumable}.webp`)} + src={`/api/icons/consumables/${consumable}.webp`} /> {unwrap(consumableDefinition.name!)} @@ -987,7 +977,7 @@ function ProvisionsFilter() { height: "1.25em", objectFit: "contain", }} - src={asset(`icons/provisions/${provision}.webp`)} + src={`/api/icons/provisions/${provision}.webp`} /> ))} @@ -1032,7 +1022,7 @@ function ProvisionsFilter() { height: "1.25em", objectFit: "contain", }} - src={asset(`icons/provisions/${provision}.webp`)} + src={`/api/icons/provisions/${provision}.webp`} /> {unwrap(provisionDefinition.name!)} @@ -1075,8 +1065,8 @@ function GameModeAbilitiesFilter() { : rawPowers; const icons = [ - ...abilities.map((ability) => `icons/consumables/${ability}.webp`), - ...powers.map((power) => `icons/provisions/${power}.webp`), + ...abilities.map((ability) => `api/icons/consumables/${ability}.webp`), + ...powers.map((power) => `api/icons/provisions/${power}.webp`), ]; return ( @@ -1094,7 +1084,7 @@ function GameModeAbilitiesFilter() { height: "1.25em", objectFit: "contain", }} - src={asset(icon)} + src={icon} /> ))} @@ -1161,7 +1151,7 @@ function GameModeAbilitiesFilter() { height: "1.25em", objectFit: "contain", }} - src={asset(`icons/consumables/${consumable}.webp`)} + src={`/api/icons/consumables/${consumable}.webp`} /> {unwrap(abilityDefinition.name!)} @@ -1210,7 +1200,7 @@ function GameModeAbilitiesFilter() { height: "1.25em", objectFit: "contain", }} - src={asset(`icons/provisions/${provision}.webp`)} + src={`/api/icons/provisions/${provision}.webp`} /> {unwrap(powerDefinition.name!)} diff --git a/packages/website/src/core/awaitables/consumableDefinitions.ts b/packages/website/src/core/awaitables/consumableDefinitions.ts deleted file mode 100644 index be0b8efb0..000000000 --- a/packages/website/src/core/awaitables/consumableDefinitions.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { fetchConsumableDefinitions } from '@blitzkit/core'; - -export const awaitableConsumableDefinitions = fetchConsumableDefinitions(); diff --git a/packages/website/src/core/awaitables/modelDefinitions.ts b/packages/website/src/core/awaitables/modelDefinitions.ts deleted file mode 100644 index 6f1cc2fd0..000000000 --- a/packages/website/src/core/awaitables/modelDefinitions.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { fetchModelDefinitions } from '@blitzkit/core'; - -export const awaitableModelDefinitions = fetchModelDefinitions(); diff --git a/packages/website/src/core/awaitables/provisionDefinitions.ts b/packages/website/src/core/awaitables/provisionDefinitions.ts deleted file mode 100644 index 1f21a1459..000000000 --- a/packages/website/src/core/awaitables/provisionDefinitions.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { fetchProvisionDefinitions } from '@blitzkit/core'; - -export const awaitableProvisionDefinitions = fetchProvisionDefinitions(); diff --git a/packages/website/src/core/awaitables/tankDefinitions.ts b/packages/website/src/core/awaitables/tankDefinitions.ts deleted file mode 100644 index fe76877f3..000000000 --- a/packages/website/src/core/awaitables/tankDefinitions.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { fetchTankDefinitions } from '@blitzkit/core'; - -export const awaitableTankDefinitions = fetchTankDefinitions(); diff --git a/packages/website/src/core/awaitables/tankNames.ts b/packages/website/src/core/awaitables/tankNames.ts index 383392e72..846ff8cbd 100644 --- a/packages/website/src/core/awaitables/tankNames.ts +++ b/packages/website/src/core/awaitables/tankNames.ts @@ -1,3 +1,4 @@ import { fetchTankNames } from "@blitzkit/core"; +import { api } from "../blitzkit/api"; -export const awaitableTankNames = fetchTankNames(); +export const awaitableTankNames = fetchTankNames(api); diff --git a/packages/website/src/core/blitzkit/filterTank.ts b/packages/website/src/core/blitzkit/filterTank.ts index 02bea5262..91c808b56 100644 --- a/packages/website/src/core/blitzkit/filterTank.ts +++ b/packages/website/src/core/blitzkit/filterTank.ts @@ -1,21 +1,19 @@ import type { TankDefinition } from "@blitzkit/core"; import { checkConsumableProvisionInclusivity } from "@blitzkit/core/src/blitzkit/checkConsumableProvisionInclusivity"; import { times } from "lodash-es"; -import { awaitableConsumableDefinitions } from "../../core/awaitables/consumableDefinitions"; import type { TankFilters } from "../../stores/tankFilters"; -import { awaitableGameDefinitions } from "../awaitables/gameDefinitions"; -import { awaitableProvisionDefinitions } from "../awaitables/provisionDefinitions"; +import { api } from "./api"; const SHELLS = times(3, (index) => index); -const consumableDefinitions = await awaitableConsumableDefinitions; -const provisionDefinitions = await awaitableProvisionDefinitions; -const gameDefinitions = await awaitableGameDefinitions; +const consumableDefinitions = await api.consumableDefinitions(); +const provisionDefinitions = await api.provisionDefinitions(); +const gameDefinitions = await api.gameDefinitions(); export async function filterTank( filters: TankFilters, tank: TankDefinition, - owned: number[] = [] + owned: number[] = [], ) { return ( ((filters.showOwned && owned.includes(tank.id)) || @@ -29,15 +27,15 @@ export async function filterTank( (filters.gunType.length === 0 || (filters.gunType.includes("regular") && tank.turrets.some((turret) => - turret.guns.some((gun) => gun.gun_type!.$case === "regular") + turret.guns.some((gun) => gun.gun_type!.$case === "regular"), )) || (filters.gunType.includes("auto_loader") && tank.turrets.some((turret) => - turret.guns.some((gun) => gun.gun_type!.$case === "auto_loader") + turret.guns.some((gun) => gun.gun_type!.$case === "auto_loader"), )) || (filters.gunType.includes("auto_reloader") && tank.turrets.some((turret) => - turret.guns.some((gun) => gun.gun_type!.$case === "auto_reloader") + turret.guns.some((gun) => gun.gun_type!.$case === "auto_reloader"), ))) && tank.turrets.some((turret) => turret.guns.some((gun) => @@ -45,9 +43,9 @@ export async function filterTank( (index) => filters.shells[index] === null || gun.shells[index] === undefined || - gun.shells[index].type === filters.shells[index] - ) - ) + gun.shells[index].type === filters.shells[index], + ), + ), ) && (filters.consumables.length === 0 || filters.consumables.every((consumable) => @@ -56,10 +54,10 @@ export async function filterTank( checkConsumableProvisionInclusivity( consumableDefinitions.consumables[consumable], tank, - gun - ) - ) - ) + gun, + ), + ), + ), )) && (filters.provisions.length === 0 || filters.provisions.every((provision) => @@ -68,22 +66,22 @@ export async function filterTank( checkConsumableProvisionInclusivity( provisionDefinitions.provisions[provision], tank, - gun - ) - ) - ) + gun, + ), + ), + ), )) && (filters.abilities.length === 0 || Object.values(tank.roles).some((id) => gameDefinitions.roles[id as unknown as number].consumables.some( - (consumable) => filters.abilities.includes(consumable) - ) + (consumable) => filters.abilities.includes(consumable), + ), )) && (filters.powers.length === 0 || Object.values(tank.roles).some((id) => gameDefinitions.roles[id as unknown as number].provisions.some( - (consumable) => filters.powers.includes(consumable) - ) + (consumable) => filters.powers.includes(consumable), + ), )) ); } diff --git a/packages/website/src/pages/[...chunk_pages]/[...locale]/performance/index.astro b/packages/website/src/pages/[...chunk_pages]/[...locale]/performance/index.astro index fc34d8b9b..c34e55a48 100644 --- a/packages/website/src/pages/[...chunk_pages]/[...locale]/performance/index.astro +++ b/packages/website/src/pages/[...chunk_pages]/[...locale]/performance/index.astro @@ -1,7 +1,7 @@ --- -import ToolOpenGraph from "../../../components/ToolOpenGraph.astro"; -import { tools } from "../../../constants/tools"; -import BaseLayout from "../../../layouts/BaseLayout.astro"; +import ToolOpenGraph from "../../../../components/ToolOpenGraph.astro"; +import { tools } from "../../../../constants/tools"; +import BaseLayout from "../../../../layouts/BaseLayout.astro"; import type { getStaticPaths } from "../index.astro"; import { Page } from "./_index";