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',