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}
+ {shouldShowAudio &&
)
}
\ No newline at end of file