import clsx from "clsx"; import { useTranslation } from "react-i18next"; import * as R from "remeda"; import { SendouDialog } from "~/components/elements/Dialog"; import * as WeaponParams from "../core/WeaponParams"; import type { ParamComparisonEntry, WeaponParamKind, } from "../weapon-params-types"; import styles from "./ParamComparisonDialog.module.css"; import { WeaponParamImage } from "./WeaponParamsTable"; /** * Modal with a simple horizontal bar chart comparing one parameter's numeric value across the * currently visible weapons. Bars are scaled relative to the largest absolute value so weapons can * be compared at a glance. */ export function ParamComparisonDialog({ kind, label, entries, currentWeaponId, onClose, }: { kind: WeaponParamKind; label: string; entries: ParamComparisonEntry[]; currentWeaponId: number; onClose: () => void; }) { const { t } = useTranslation(["params"]); const sortedEntries = R.sortBy(entries, [(entry) => entry.value, "desc"]); const maxValue = Math.max(...entries.map((entry) => Math.abs(entry.value))); return (
{sortedEntries.map((entry) => (
{entry.name}
{WeaponParams.formatValue(entry.value)}
))}
); }