import { useEffect, useRef, useState } from 'react'; import { useNuiEvent } from '../../hooks/useNuiEvent'; import { useKeyPress } from '../../hooks/useKeyPress'; import { fetchNui } from '../../utils/fetchNui'; import skillcheck, { SkillCheckProps } from './index'; import { useInterval } from '@chakra-ui/react'; import { Simulate } from 'react-dom/test-utils'; import keyPress = Simulate.keyPress; interface Props { angle: number; offset: number; multiplier: number; skillCheck: SkillCheckProps; handleComplete: (success: boolean) => void; } const Indicator: React.FC = ({ angle, offset, multiplier, handleComplete, skillCheck }) => { const [indicatorAngle, setIndicatorAngle] = useState(-90); const [gameState, setGameState] = useState(false); const isKeyPressed = useKeyPress('e'); useInterval( () => { setIndicatorAngle((prevState) => { return (prevState += multiplier); }); }, gameState ? 1 : null ); useEffect(() => { setIndicatorAngle(-90); setGameState(true); }, [skillCheck]); useEffect(() => { if (indicatorAngle + 90 >= 360) { // fetchNui('skillCheckOver', { success: false }); setGameState(false); handleComplete(false); } }, [indicatorAngle]); useEffect(() => { if (!isKeyPressed) return; // setGameState(false); if (isKeyPressed) { if (indicatorAngle < angle || indicatorAngle > angle + (315 - offset)) { // fetchNui('skillCheckOver', { success: false }); handleComplete(false); } else { // fetchNui('skillCheckOver', { success: true }); handleComplete(true); } } }, [isKeyPressed]); return ( ); }; export default Indicator;