// note: dev only component, not used in production code import { useTranslation } from "react-i18next"; import { Image } from "~/components/Image"; import { specialWeaponImageUrl } from "~/utils/urls"; import { getSpecialsWithRange, type SpecialWeaponWithRange, } from "../core/special-weapon-range"; import styles from "./SpecialRangeVisualization.module.css"; const RANGE_TYPE_COLOR: Record = { projectile: "#8cd4f5", radius: "#f5b8d0", }; export function SpecialRangeVisualization() { const { t } = useTranslation(["weapons"]); const specials = getSpecialsWithRange(); if (specials.length === 0) { return null; } const maxRange = Math.max( ...specials.map((special) => special.range + (special.blastRadius ?? 0)), ); return (
projectile
radius
{specials.map((special) => { const color = RANGE_TYPE_COLOR[special.rangeType]; const rangeWidth = (special.range / maxRange) * 100; const blastWidth = special.blastRadius ? (special.blastRadius / maxRange) * 100 : 0; return (
{t(`weapons:SPECIAL_${special.specialWeaponId}`)}
{blastWidth > 0 ? ( ) : null}
{special.range.toFixed(1)}
); })}
); }