From 5c30169ecabd422807dfa20379b8e2f1234febbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Wed, 10 Dec 2025 22:57:21 -0600 Subject: [PATCH 01/11] fix: canvas smooth resize --- .../Tankopedia/HeroSection/components/TankSandbox/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/website/src/components/Tankopedia/HeroSection/components/TankSandbox/index.tsx b/packages/website/src/components/Tankopedia/HeroSection/components/TankSandbox/index.tsx index ef90ce6ec..406cfd5d0 100644 --- a/packages/website/src/components/Tankopedia/HeroSection/components/TankSandbox/index.tsx +++ b/packages/website/src/components/Tankopedia/HeroSection/components/TankSandbox/index.tsx @@ -150,6 +150,7 @@ export const TankSandbox = forwardRef( return ( Date: Wed, 10 Dec 2025 23:03:30 -0600 Subject: [PATCH 02/11] feat: clear all provisions --- packages/i18n/strings/en.json | 3 ++- .../src/components/Compare/CompareTable.tsx | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index 2965b37e6..d2c6aee0c 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -1267,7 +1267,8 @@ "upgrade": "Upgrade" }, "provisions": { - "clear": "Clear" + "clear": "Clear", + "clear_all": "Clear all" }, "consumables": { "clear": "Clear" diff --git a/packages/website/src/components/Compare/CompareTable.tsx b/packages/website/src/components/Compare/CompareTable.tsx index d34cb258d..af073969c 100644 --- a/packages/website/src/components/Compare/CompareTable.tsx +++ b/packages/website/src/components/Compare/CompareTable.tsx @@ -345,7 +345,24 @@ export function CompareTable({ stats }: CompareTableProps) { }); }} /> - + + + + + + + + + {strings.website.common.tank_search.select_dialog_title} + + + { + onSelect?.(tank); + setOpen(false); + }} + /> + + + + {subSelector && ( + + + - )} - - + {...props} + > + + + - - - {strings.website.common.tank_search.select_dialog_title} - + + + {tankDefinition.turrets.length > 1 && ( + + {tankDefinition.turrets.map((turret) => ( + + ))} + + )} - { - onSelect?.(tank); - setOpen(false); - }} - /> - - + {turretDefinition && turretDefinition.guns.length > 1 && ( + + {turretDefinition.guns.map((gun) => ( + + {literals(strings.common.units.mm, { + value: gun.shells[0].caliber.toFixed(0), + })} + + } + /> + ))} + + )} + + + + )} + ); } @@ -113,9 +193,12 @@ function ModuleSeparator() { } function Content({ skeleton }: MaybeSkeletonComponentProps) { - const hull = Mixer.use((state) => state.hull); - const turretId = Mixer.use((state) => state.turret.tank.id); - const gunId = Mixer.use((state) => state.gun.tank.id); + const hullTankId = Mixer.use((state) => state.hull); + const turretTankId = Mixer.use((state) => state.turret.tank.id); + const turretTurretId = Mixer.use((state) => state.turret.turret.id); + const gunTankId = Mixer.use((state) => state.gun.tank.id); + const gunTurretId = Mixer.use((state) => state.gun.turret.id); + const gunGunId = Mixer.use((state) => state.gun.gun.id); const canvas = useRef(null!); const { strings } = useLocale(); @@ -136,7 +219,7 @@ function Content({ skeleton }: MaybeSkeletonComponentProps) { > - { Mixer.mutate((draft) => { draft.hull = tank; @@ -170,9 +253,10 @@ function Content({ skeleton }: MaybeSkeletonComponentProps) { }} /> - { Mixer.mutate((draft) => { draft.turret = { @@ -183,9 +267,11 @@ function Content({ skeleton }: MaybeSkeletonComponentProps) { }} /> - { Mixer.mutate((draft) => { draft.gun = { From 2aba4da1afeb027da88729b177a47969d7d35b7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sat, 27 Dec 2025 19:26:16 -0600 Subject: [PATCH 05/11] fix: selector --- .../src/pages/[...locale]/mixer/_index.tsx | 44 ++++++++++++++----- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/packages/website/src/pages/[...locale]/mixer/_index.tsx b/packages/website/src/pages/[...locale]/mixer/_index.tsx index 72c1fcd13..a0d414198 100644 --- a/packages/website/src/pages/[...locale]/mixer/_index.tsx +++ b/packages/website/src/pages/[...locale]/mixer/_index.tsx @@ -1,4 +1,10 @@ -import { asset, TIER_ROMAN_NUMERALS } from "@blitzkit/core"; +import { + asset, + GunDefinition, + TankDefinition, + TIER_ROMAN_NUMERALS, + TurretDefinition, +} from "@blitzkit/core"; import { literals } from "@blitzkit/i18n"; import { CaretRightIcon, CaretUpIcon, UpdateIcon } from "@radix-ui/react-icons"; import { @@ -17,10 +23,7 @@ import { MixerScene } from "../../../components/MixerScene"; import { ModuleButton } from "../../../components/ModuleButtons/ModuleButton"; import { PageWrapper } from "../../../components/PageWrapper"; import { ScreenshotButton } from "../../../components/ScreenshotButton"; -import { - TankSearch, - type TankSearchProps, -} from "../../../components/TankSearch"; +import { TankSearch } from "../../../components/TankSearch"; import { awaitableModelDefinitions } from "../../../core/awaitables/modelDefinitions"; import { awaitableTankDefinitions } from "../../../core/awaitables/tankDefinitions"; import { curateMixer } from "../../../core/blitzkit/curateMixer"; @@ -59,7 +62,11 @@ export function Page({ type ModuleButtonProps = Omit & MaybeSkeletonComponentProps & { tank: number; - onSelect: TankSearchProps["onSelect"]; + onSelect: ( + tank: TankDefinition, + turret?: TurretDefinition, + gun?: GunDefinition + ) => void; turret?: number; gun?: number; }; @@ -150,9 +157,15 @@ function ModuleChooser({ {tankDefinition.turrets.map((turret) => ( { + onSelect?.(tankDefinition, turret); + }} /> ))} @@ -162,6 +175,9 @@ function ModuleChooser({ {turretDefinition.guns.map((gun) => ( } + onClick={() => { + onSelect?.(tankDefinition, turretDefinition, gun); + }} /> ))} @@ -257,11 +276,11 @@ function Content({ skeleton }: MaybeSkeletonComponentProps) { skeleton={skeleton} tank={turretTankId} turret={turretTurretId} - onSelect={(tank) => { + onSelect={(tank, turret) => { Mixer.mutate((draft) => { draft.turret = { tank, - turret: tank.turrets.at(-1)!, + turret: turret ?? tank.turrets.at(-1)!, }; }); }} @@ -272,12 +291,15 @@ function Content({ skeleton }: MaybeSkeletonComponentProps) { tank={gunTankId} turret={gunTurretId} gun={gunGunId} - onSelect={(tank) => { + onSelect={(tank, turret, gun) => { Mixer.mutate((draft) => { draft.gun = { tank, - turret: tank.turrets.at(-1)!, - gun: tank.turrets.at(-1)!.guns.at(-1)!, + turret: turret ?? tank.turrets.at(-1)!, + gun: + gun ?? + turret?.guns.at(-1) ?? + tank.turrets.at(-1)!.guns.at(-1)!, }; }); }} From c0fdf10eba88c6e83f7b58e824cd8a159659bf58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sat, 27 Dec 2025 19:33:17 -0600 Subject: [PATCH 06/11] fix: tiny compare table buttons --- packages/website/src/components/Compare/CompareTable.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/website/src/components/Compare/CompareTable.tsx b/packages/website/src/components/Compare/CompareTable.tsx index af073969c..c57fdfc49 100644 --- a/packages/website/src/components/Compare/CompareTable.tsx +++ b/packages/website/src/components/Compare/CompareTable.tsx @@ -277,14 +277,14 @@ export function CompareTable({ stats }: CompareTableProps) { - + + + + + + + + + + +