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,