diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 379206b..d521602 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,6 +1,10 @@ -import { useState } from "react" +import { useState, useEffect } from "react" -export default function Header() { +export default function Header({ + isAudioActive = false +}: { + isAudioActive: boolean +}) { const quoteArray = [ "It works on my machine", "Revert 'Revert 'Revert", @@ -23,6 +27,11 @@ export default function Header() { setQuote(newQuote); } else drawNewQuote(); } + useEffect(() => { + if (isAudioActive) { + setQuote("go bills") + } + }, [isAudioActive]) return (
diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx index 5461fba..da01af5 100644 --- a/src/components/Layout.tsx +++ b/src/components/Layout.tsx @@ -1,18 +1,58 @@ import Header from "./Header" import Footer from "./Footer" import Snow from "./Snow" +import React, { useState, useEffect, useCallback } from 'react'; export default function Layout({ children }: { children: JSX.Element | JSX.Element[] }) { + // teehee + const [ shouldShowAudio, setShouldShowAudio ] = useState(false) + const [ pressedKeys, setPressedKeys ] = useState([]) + const keyCombination = [ + "ArrowUp", + "ArrowUp", + "ArrowDown", + "ArrowDown", + "ArrowLeft", + "ArrowRight", + "ArrowLeft", + "ArrowRight", + "b", + "a", + "Enter" + ] + const isArraysEqual = (arr1: string[], arr2: string[]) => { + return arr1.length === arr2.length && + arr1.every((val, ind) => val === arr2[ind]); + } + const onKeyDown = useCallback((e: KeyboardEvent) => { + const currentlyPressedKeys = pressedKeys; + currentlyPressedKeys.push(e.key) + + if (!isArraysEqual(keyCombination, currentlyPressedKeys) && keyCombination.filter((v) => v === e.key) && !e.repeat) { + setPressedKeys(() => { + return currentlyPressedKeys + }) + } else { + document.removeEventListener('keydown', onKeyDown) + setShouldShowAudio(true) + console.log('heeey-ey-ey-ey') + } + }, []) + useEffect(() => { + document.addEventListener('keydown', onKeyDown); + }) + return (
-
+
{children}
) } \ No newline at end of file