From e9d1c82a606389111a26f497cb6a9363a3d57cc5 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sun, 22 Dec 2024 20:25:05 -0600 Subject: [PATCH] feat: added option to hide tank under dynamic armor --- .../HeroSection/components/Options/index.tsx | 14 ++++++++++++++ .../HeroSection/components/TankSandbox/index.tsx | 8 +++++++- .../src/stores/tankopediaPersistent/index.ts | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/website/src/components/Tankopedia/HeroSection/components/Options/index.tsx b/packages/website/src/components/Tankopedia/HeroSection/components/Options/index.tsx index 9e9264e9d..bce2ac859 100644 --- a/packages/website/src/components/Tankopedia/HeroSection/components/Options/index.tsx +++ b/packages/website/src/components/Tankopedia/HeroSection/components/Options/index.tsx @@ -65,6 +65,9 @@ export function Options({ thicknessRange, canvas }: OptionsProps) { const greenPenetration = TankopediaPersistent.use( (state) => state.greenPenetration, ); + const hideTankModelUnderArmor = TankopediaPersistent.use( + (state) => state.hideTankModelUnderArmor, + ); const advancedHighlighting = TankopediaPersistent.use( (state) => state.advancedHighlighting, ); @@ -474,6 +477,17 @@ export function Options({ thicknessRange, canvas }: OptionsProps) { Green penetration + { + mutateTankopediaPersistent((draft) => { + draft.hideTankModelUnderArmor = checked; + }); + }} + > + Hide tank model under armor + + { 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 1a8089469..ee647479c 100644 --- a/packages/website/src/components/Tankopedia/HeroSection/components/TankSandbox/index.tsx +++ b/packages/website/src/components/Tankopedia/HeroSection/components/TankSandbox/index.tsx @@ -15,6 +15,7 @@ import { useOnScreen } from '../../../../../hooks/useOnScreen'; import { useTankModelDefinition } from '../../../../../hooks/useTankModelDefinition'; import { Duel } from '../../../../../stores/duel'; import { TankopediaEphemeral } from '../../../../../stores/tankopediaEphemeral'; +import { TankopediaPersistent } from '../../../../../stores/tankopediaPersistent'; import { TankopediaDisplay } from '../../../../../stores/tankopediaPersistent/constants'; import { Armor } from '../../../../Armor'; import { ArmorPlateDisplay } from '../../../../Armor/components/ArmorPlateDisplay'; @@ -49,6 +50,9 @@ export const TankSandbox = forwardRef( const gunModelDefinition = turretModelDefinition.guns[protagonistGun.gun_type!.value.base.id]; const display = TankopediaEphemeral.use((state) => state.display); + const hideTankModelUnderArmor = TankopediaPersistent.use( + (state) => state.hideTankModelUnderArmor, + ); const onScreen = useOnScreen(canvas); useImperativeHandle(ref, () => canvas.current!, []); @@ -190,7 +194,9 @@ export const TankSandbox = forwardRef( > {!naked && } - {display !== TankopediaDisplay.StaticArmor && } + {(display === TankopediaDisplay.Model || + (display === TankopediaDisplay.DynamicArmor && + !hideTankModelUnderArmor)) && } diff --git a/packages/website/src/stores/tankopediaPersistent/index.ts b/packages/website/src/stores/tankopediaPersistent/index.ts index 2313104b5..26807b389 100644 --- a/packages/website/src/stores/tankopediaPersistent/index.ts +++ b/packages/website/src/stores/tankopediaPersistent/index.ts @@ -18,6 +18,7 @@ export interface TankopediaPersistentStore { showExternalModules: boolean; showPrimaryArmor: boolean; recentlyViewed: number[]; + hideTankModelUnderArmor: boolean; sort: { by: TankopediaSortBy; @@ -29,6 +30,7 @@ export const TankopediaPersistent = createContextualStore(() => create()( persist( subscribeWithSelector(() => ({ + hideTankModelUnderArmor: false, wireframe: false, opaque: false, advancedHighlighting: false,