import classes from './WHEffectView.module.scss'; import clsx from 'clsx'; import { useMapRootState } from '@/hooks/Mapper/mapRootProvider'; import { EFFECT_FOREGROUND_STYLES, EFFECT_NAME } from '@/hooks/Mapper/components/map/constants.ts'; import { EffectRaw } from '@/hooks/Mapper/types/effect.ts'; import { Fragment, useMemo } from 'react'; import { FixedTooltip } from '@/hooks/Mapper/components/ui-kit'; type PreparedEffectType = { name: string; power: string; positive: boolean; }; const prepareEffects = (effects: Record, effectName: string, effectPower: number) => { const effect = effects[effectName]; const out: PreparedEffectType[] = []; effect.modifiers.map(mod => { const modPower = mod.power[effectPower - 1]; out.push({ name: mod.name, power: modPower, positive: mod.positive, }); }); out.sort((a, b) => (a.positive === b.positive ? 0 : a.positive ? -1 : 1)); return out; }; let counter = 0; export interface WHEffectViewProps { effectName: string; effectPower: number; className?: string; } export const WHEffectView = ({ effectName, effectPower, className }: WHEffectViewProps) => { const { data: { effects }, } = useMapRootState(); const effectClass = EFFECT_FOREGROUND_STYLES[effectName]; const effectInfo = effects[effectName]; const preparedEffect = useMemo( () => prepareEffects(effects, effectName, effectPower), [effectName, effectPower, effects], ); const targetClass = useMemo(() => `wh-effect-name${effectInfo.id}-${counter++}`, []); return (
{preparedEffect.map(({ name, power, positive }) => ( {name} {power} ))}
{effectName}
); };