import { useCallback, useRef, useState } from "react"; import { useGame } from "../../context/GameContext.js"; import { calculateClickPower } from "../../engine/tick.js"; interface FloatText { id: number; x: number; y: number; text: string; } export const ClickArea = (): React.JSX.Element => { const { state, handleClick, formatNumber } = useGame(); const [floats, setFloats] = useState([]); const nextIdRef = useRef(0); const handleClickWithFloat = useCallback( (e: React.MouseEvent) => { if (!state) return; const rect = e.currentTarget.getBoundingClientRect(); const x = e.clientX - rect.left; const y = e.clientY - rect.top; const id = nextIdRef.current++; const clickPower = calculateClickPower(state); setFloats((prev) => [...prev, { id, x, y, text: `+${formatNumber(clickPower)}` }]); handleClick(); setTimeout(() => { setFloats((prev) => prev.filter((f) => f.id !== id)); }, 900); }, [state, handleClick], ); if (!state) return
; const clickPower = calculateClickPower(state); return (

Guild Hall

{floats.map((float) => ( {float.text} ))}

+{formatNumber(clickPower)} gold/click

); };