diff --git a/packages/website/src/components/PrimaryArmorSceneComponent/index.tsx b/packages/website/src/components/PrimaryArmorSceneComponent/index.tsx index ae743245d..4e851cb32 100644 --- a/packages/website/src/components/PrimaryArmorSceneComponent/index.tsx +++ b/packages/website/src/components/PrimaryArmorSceneComponent/index.tsx @@ -23,9 +23,9 @@ import { hasEquipment } from "../../hooks/useEquipment"; import { Tankopedia } from "../../stores/tankopedia"; import { TankopediaPersistent } from "../../stores/tankopediaPersistent"; import { transitionEvent } from "../Lighting"; +import { spacedArmorRenderTarget } from "./PrimaryArmorRenderTarget"; import fragmentShader from "./shaders/fragment.glsl?raw"; import vertexShader from "./shaders/vertex.glsl?raw"; -import { spacedArmorRenderTarget } from "./PrimaryArmorRenderTarget"; interface PrimaryArmorSceneComponentProps { thickness: number; diff --git a/packages/website/src/components/SpacedArmorSubExternal/index.tsx b/packages/website/src/components/SpacedArmorSubExternal/index.tsx index 0dda132d5..3f38ddc5e 100644 --- a/packages/website/src/components/SpacedArmorSubExternal/index.tsx +++ b/packages/website/src/components/SpacedArmorSubExternal/index.tsx @@ -7,12 +7,15 @@ import { Plane, ShaderMaterial, } from "three"; -import type { ArmorUserData, ExternalModuleVariant } from "../SpacedArmorSceneComponent"; -import { hasEquipment } from "../../core/blitzkit/hasEquipment"; import { jsxTree } from "../../core/blitzkit/jsxTree"; -import { Duel } from "../../stores/duel"; +import { DuelModule, getDuel } from "../../hooks/useDuel"; +import { hasEquipment } from "../../hooks/useEquipment"; import { Tankopedia } from "../../stores/tankopedia"; -import { ArmorType } from "./SpacedArmorScene"; +import { ArmorType } from "../SpacedArmorScene"; +import type { + ArmorUserData, + ExternalModuleVariant, +} from "../SpacedArmorSceneComponent"; import fragmentShader from "./shaders/fragment.glsl?raw"; import vertexShader from "./shaders/vertex.glsl?raw"; @@ -49,47 +52,51 @@ export function SpacedArmorSubExternal({ function handleShellChange() { const tankopediaEphemeral = Tankopedia.state; const shell = - tankopediaEphemeral.customShell ?? Duel.state.antagonist.shell; + tankopediaEphemeral.customShell ?? + getDuel("antagonist", DuelModule.Shell); material.uniforms.penetration.value = shell.penetration!.near; } function handleProtagonistEquipmentChange() { - const equipment = Duel.state.protagonist.equipmentMatrix; + const protagonist = getDuel("protagonist", DuelModule.Tank); + const hasEnhancedArmor = hasEquipment( 110, - Duel.state.protagonist.tank.equipment_preset, - equipment, + protagonist.equipment_preset, + Tankopedia.state.protagonist.equipment, ); const equalizer = - (Duel.state.equalize - ? Duel.state.protagonist.tank.equalizer?.armor + (Tankopedia.state.equalize + ? protagonist.equalizer?.armor : undefined) ?? 1; material.uniforms.thickness.value = thickness * (hasEnhancedArmor ? 1.04 : 1) * equalizer; } function handleAntagonistEquipmentChange() { - const equipment = Duel.state.antagonist.equipmentMatrix; + const antagonist = getDuel("antagonist", DuelModule.Tank); + const tankopediaEphemeral = Tankopedia.state; const shell = - tankopediaEphemeral.customShell ?? Duel.state.antagonist.shell; + tankopediaEphemeral.customShell ?? + getDuel("antagonist", DuelModule.Shell); const penetration = shell.penetration!.near; const hasCalibratedShells = hasEquipment( 103, - Duel.state.antagonist.tank.equipment_preset, - equipment, + antagonist.equipment_preset, + Tankopedia.state.antagonist.equipment, ); const equalize = - (Duel.state.equalize - ? Duel.state.antagonist.tank.equalizer?.penetration + (Tankopedia.state.equalize + ? antagonist.equalizer?.penetration : undefined) ?? 1; material.uniforms.penetration.value = penetration * resolvePenetrationCoefficient( hasCalibratedShells, - Duel.state.equalize, + Tankopedia.state.equalize, shell.type, - Duel.state.antagonist.tank.equalizer, + antagonist.equalizer, ) * equalize; } @@ -99,17 +106,17 @@ export function SpacedArmorSubExternal({ handleAntagonistEquipmentChange(); const unsubscribes = [ - Duel.on((state) => state.antagonist.shell, handleShellChange), + Tankopedia.on((state) => state.antagonist.shell, handleShellChange), Tankopedia.on((state) => state.customShell, handleShellChange), - Duel.on( - (state) => state.protagonist.equipmentMatrix, + Tankopedia.on( + (state) => state.protagonist.equipment, handleProtagonistEquipmentChange, ), - Duel.on( - (state) => state.antagonist.equipmentMatrix, + Tankopedia.on( + (state) => state.antagonist.equipment, handleAntagonistEquipmentChange, ), - Duel.on( + Tankopedia.on( (state) => state.equalize, () => { handleProtagonistEquipmentChange();