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 (
-
+
+
+
+ >
+
+
+
+
+
+
