import { useEffect, useRef, useState } from 'react'; import { useNuiEvent } from '../../hooks/useNuiEvent'; import { useKeyPress } from '../../hooks/useKeyPress'; import { fetchNui } from '../../utils/fetchNui'; import { SkillCheckProps } from './index'; interface Props { angle: number; offset: number; multiplier: number; setVisible: React.Dispatch>; setSkillCheck: React.Dispatch>; } const Indicator: React.FC = ({ angle, offset, multiplier, setSkillCheck, setVisible }) => { const [indicatorAngle, setIndicatorAngle] = useState(-90); const intervalRef = useRef(null); const isKeyPressed = useKeyPress('e'); useEffect(() => { intervalRef.current = setInterval(() => { setIndicatorAngle((prevState) => (prevState += multiplier)); }, 1); return () => { if (intervalRef.current) clearInterval(intervalRef.current); }; }, []); useEffect(() => { if (intervalRef.current && indicatorAngle + 90 >= 360) { clearInterval(intervalRef.current); fetchNui('skillCheckOver', { success: false }); setVisible(false); } if (isKeyPressed && intervalRef.current) { clearInterval(intervalRef.current); if (indicatorAngle < angle || indicatorAngle > angle + (315 - offset)) { fetchNui('skillCheckOver', { success: false }); } else { fetchNui('skillCheckOver', { success: true }); } setVisible(false); } }, [indicatorAngle, isKeyPressed]); return ( ); }; export default Indicator;