From 92c81d60dbf370a6da327e4b2357fb02e359e711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Wed, 10 Jan 2024 19:08:23 -0600 Subject: [PATCH] feat: spaced armor toggle --- .../[id]/components/Model/TankDisplay.tsx | 12 ++++++++++ .../components/Model/components/TankArmor.tsx | 22 ++++++++++++++++--- src/stores/tankopedia.ts | 2 ++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx b/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx index 488f2198b..b9c2b711f 100644 --- a/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx +++ b/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx @@ -37,6 +37,7 @@ export function TankDisplay() { const mode = useTankopedia((state) => state.mode); const showGrid = useTankopedia((state) => state.model.showGrid); const opaqueArmor = useTankopedia((state) => state.model.opaqueArmor); + const showSpacedArmor = useTankopedia((state) => state.model.showSpacedArmor); const protagonist = useTankopedia((state) => { if (!state.areTanksAssigned) return; return state.protagonist; @@ -188,6 +189,17 @@ export function TankDisplay() { > Opaque armor + + { + mutateTankopedia((draft) => { + draft.model.showSpacedArmor = checked; + }); + }} + > + Spaced armor + diff --git a/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor.tsx b/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor.tsx index 3ba42fad4..0dacd214c 100644 --- a/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor.tsx +++ b/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor.tsx @@ -28,6 +28,7 @@ export function TankArmor({ ...props }: TankArmorProps) { if (!state.areTanksAssigned) return; return state.antagonist; }); + const showSpacedArmor = useTankopedia((state) => state.model.showSpacedArmor); if (!protagonist || !antagonist) return null; @@ -93,7 +94,12 @@ export function TankArmor({ ...props }: TankArmorProps) { const thickness = tankModelDefinition.armor.thickness[armorId]; const isSpaced = tankModelDefinition.armor.spaced?.includes(armorId); - if (!isVisible || thickness === undefined) return null; + if ( + !isVisible || + thickness === undefined || + (isSpaced && !showSpacedArmor) + ) + return null; return ( ()(() => ({ controlsEnabled: true, showGrid: true, opaqueArmor: false, + showSpacedArmor: true, }, areTanksAssigned: false, mode: 'model',