diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index ba11ded57..e9a1a3265 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -868,6 +868,10 @@ "hard": "Hard", "medium": "Medium", "soft": "Soft" + }, + + "ricochet": { + "max": "Max: %s1°" } }, diff --git a/packages/website/public/assets/images/tankopedia/visualizers/ricochet/armor-hash.png b/packages/website/public/assets/images/tankopedia/visualizers/ricochet/armor-hash.png new file mode 100644 index 000000000..e7728db67 Binary files /dev/null and b/packages/website/public/assets/images/tankopedia/visualizers/ricochet/armor-hash.png differ diff --git a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/HullTraverseVisualizer/index.tsx b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/HullTraverseVisualizer/index.tsx index 8d31dda3e..099bb113d 100644 --- a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/HullTraverseVisualizer/index.tsx +++ b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/HullTraverseVisualizer/index.tsx @@ -4,13 +4,13 @@ import type { TankCharacteristics } from '../../../../../../../core/blitzkit/tan import { useLocale } from '../../../../../../../hooks/useLocale'; import './index.css'; -interface HullTraverseVisualizerProps { +export interface VisualizerProps { stats: TankCharacteristics; } type Terrain = 'Hard' | 'Medium' | 'Soft'; -export function HullTraverseVisualizer({ stats }: HullTraverseVisualizerProps) { +export function HullTraverseVisualizer({ stats }: VisualizerProps) { const hull = useRef(null); const turret = useRef(null); const [terrain, setTerrain] = useState('Hard'); diff --git a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/RicochetVisuazlizer.tsx b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/RicochetVisuazlizer.tsx new file mode 100644 index 000000000..446349aa1 --- /dev/null +++ b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/components/RicochetVisuazlizer.tsx @@ -0,0 +1,114 @@ +import { asset } from '@blitzkit/core'; +import { literals } from '@blitzkit/i18n'; +import { Box, Card, Text } from '@radix-ui/themes'; +import { Var } from '../../../../../../core/radix/var'; +import { useLocale } from '../../../../../../hooks/useLocale'; +import { Duel } from '../../../../../../stores/duel'; +import type { VisualizerProps } from './HullTraverseVisualizer'; + +export function RicochetVisualizer({ stats }: VisualizerProps) { + const ricochet = stats.shellRicochet ?? 90; + const normalization = stats.shellNormalization; + const shell = Duel.use((state) => state.protagonist.shell); + const { strings } = useLocale(); + + return ( + + + + + + + + + + + + + {literals(strings.website.tools.tankopedia.visualizers.ricochet.max, [ + (ricochet + normalization).toFixed(0), + ])} + + + + ); +} diff --git a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/index.tsx b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/index.tsx index 6bdb467ae..bed27e35e 100644 --- a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/index.tsx +++ b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Characteristics/index.tsx @@ -34,6 +34,7 @@ import { TankopediaEphemeral } from '../../../../../stores/tankopediaEphemeral'; import { HullTraverseVisualizer } from './components/HullTraverseVisualizer'; import { Info } from './components/Info'; import { InfoWithDelta } from './components/InfoWithDelta'; +import { RicochetVisualizer } from './components/RicochetVisuazlizer'; const [equipmentDefinitions, provisionDefinitions] = await Promise.all([ awaitableEquipmentDefinitions, @@ -368,22 +369,26 @@ export function Characteristics() { /> )} - + {!isExplosive(shell.type) && ( - + <> + + + + )}