diff --git a/packages/website/public/assets/images/tankopedia/visualizers/reload/shell.png b/packages/website/public/assets/images/tankopedia/visualizers/reload/shell.png new file mode 100644 index 000000000..57a555a2f Binary files /dev/null and b/packages/website/public/assets/images/tankopedia/visualizers/reload/shell.png differ diff --git a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/components/Shell.tsx b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/components/Shell.tsx index e345c3f89..512cdd5df 100644 --- a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/components/Shell.tsx +++ b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/components/Shell.tsx @@ -4,6 +4,7 @@ import { useEffect, useRef } from 'react'; import { reloadUpdate, type ReloadUpdateData } from '..'; import { Var } from '../../../../../../../../core/radix/var'; import type { StatsAcceptorProps } from '../../HullTraverseVisualizer'; +import { ShellBorder } from './ShellBorder'; interface ShellProps { index: number; @@ -33,29 +34,58 @@ export function Shell({ index, stats }: ShellProps & StatsAcceptorProps) { position: 'absolute', top: '50%', left: '50%', - transform: `translate(-50%, -50%) rotate(${(index - Math.floor(stats.shells / 2)) * 10}deg)`, + transform: `translate(-50%, -50%) rotate(${7 * (index - (stats.shells - 1) / 2) + 135}deg)`, }} > - - - + + + + + ); } diff --git a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/components/ShellBorder.tsx b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/components/ShellBorder.tsx new file mode 100644 index 000000000..6d0f6b621 --- /dev/null +++ b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/components/ShellBorder.tsx @@ -0,0 +1,21 @@ +import type { ComponentProps } from 'react'; + +export function ShellBorder(props: ComponentProps<'svg'>) { + return ( + + + + ); +} diff --git a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/components/Target.tsx b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/components/Target.tsx new file mode 100644 index 000000000..8e3b76920 --- /dev/null +++ b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/components/Target.tsx @@ -0,0 +1,22 @@ +import { Box } from '@radix-ui/themes'; + +export function Target() { + return ( + + ); +} diff --git a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/index.tsx b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/index.tsx index fb104c7d9..ec1e73b54 100644 --- a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/index.tsx +++ b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/ReloadVisualizer/index.tsx @@ -5,6 +5,7 @@ import { useEffect, useRef } from 'react'; import { Var } from '../../../../../../../core/radix/var'; import type { StatsAcceptorProps } from '../HullTraverseVisualizer'; import { Shell } from './components/Shell'; +import { Target } from './components/Target'; export interface ReloadUpdateData { reload: number; @@ -15,8 +16,8 @@ export const reloadUpdate = new Quicklime(); export function ReloadVisualizer({ stats }: StatsAcceptorProps) { const reloadCircle = useRef(null); - - const size = `${stats.shells === 1 ? 66 : 58}%`; + const reloadCore = useRef(null); + const reloadGlow = useRef(null); useEffect(() => { let cancel = false; @@ -46,11 +47,14 @@ export function ReloadVisualizer({ stats }: StatsAcceptorProps) { const handleReloadUpdate: QuicklimeCallback = ({ data, }) => { - if (!reloadCircle.current) return; + if (!reloadCircle.current || !reloadCore.current || !reloadGlow.current) + return; const reloadAngle = data.reload * 2 * Math.PI; - reloadCircle.current.style.background = `conic-gradient(${Var('amber-9')} 0 ${reloadAngle}rad, ${Var('red-7')} ${reloadAngle}rad)`; + reloadCircle.current.style.background = `conic-gradient(${Var('amber-9')} 0 ${reloadAngle}rad, ${Var('orange-7')} ${reloadAngle}rad)`; + reloadCore.current.style.background = `conic-gradient(${Var('amber-4')} 0 ${reloadAngle}rad, ${Var('orange-3')} ${reloadAngle}rad)`; + reloadGlow.current.style.background = `conic-gradient(${Var('amber-9')} 0 ${reloadAngle}rad, transparent ${reloadAngle}rad)`; }; reloadUpdate.on(handleReloadUpdate); @@ -63,19 +67,7 @@ export function ReloadVisualizer({ stats }: StatsAcceptorProps) { return ( - + + + + > + + + + + +