import React, { useState, useEffect } from "react"; import Grid from "@material-ui/core/Grid"; import { IMinigameProps } from "./IMinigameProps"; import { KeyHandler } from "./KeyHandler"; import { GameTimer } from "./GameTimer"; import { interpolate } from "./Difficulty"; interface Difficulty { [key: string]: number; window: number; } const difficulties: { Trivial: Difficulty; Normal: Difficulty; Hard: Difficulty; Impossible: Difficulty; } = { Trivial: { window: 600 }, Normal: { window: 325 }, Hard: { window: 250 }, Impossible: { window: 150 }, }; export function SlashGame(props: IMinigameProps): React.ReactElement { const difficulty: Difficulty = { window: 0 }; interpolate(difficulties, props.difficulty, difficulty); const [guarding, setGuarding] = useState(true); function press(event: React.KeyboardEvent): void { event.preventDefault(); if (event.keyCode !== 32) return; if (guarding) { props.onFailure(); } else { props.onSuccess(); } } useEffect(() => { let id2 = -1; const id = window.setTimeout(() => { setGuarding(false); id2 = window.setTimeout(() => setGuarding(true), difficulty.window); }, Math.random() * 3250 + 1500); return () => { clearInterval(id); if (id2 !== -1) clearInterval(id2); }; }, []); return (

Slash when his guard is down!

{guarding ? "!Guarding!" : "!ATTACKING!"}

); }