totally overkill but absolutely hilarious
This commit is contained in:
@@ -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 = [
|
const quoteArray = [
|
||||||
"It works on my machine",
|
"It works on my machine",
|
||||||
"Revert 'Revert 'Revert",
|
"Revert 'Revert 'Revert",
|
||||||
@@ -23,6 +27,11 @@ export default function Header() {
|
|||||||
setQuote(newQuote);
|
setQuote(newQuote);
|
||||||
} else drawNewQuote();
|
} else drawNewQuote();
|
||||||
}
|
}
|
||||||
|
useEffect(() => {
|
||||||
|
if (isAudioActive) {
|
||||||
|
setQuote("go bills")
|
||||||
|
}
|
||||||
|
}, [isAudioActive])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="bg-zinc-900 p-4 flex justify-between">
|
<div className="bg-zinc-900 p-4 flex justify-between">
|
||||||
|
|||||||
@@ -1,18 +1,58 @@
|
|||||||
import Header from "./Header"
|
import Header from "./Header"
|
||||||
import Footer from "./Footer"
|
import Footer from "./Footer"
|
||||||
import Snow from "./Snow"
|
import Snow from "./Snow"
|
||||||
|
import React, { useState, useEffect, useCallback } from 'react';
|
||||||
|
|
||||||
export default function Layout({
|
export default function Layout({
|
||||||
children
|
children
|
||||||
}: {
|
}: {
|
||||||
children: JSX.Element | JSX.Element[]
|
children: JSX.Element | JSX.Element[]
|
||||||
}) {
|
}) {
|
||||||
|
// teehee
|
||||||
|
const [ shouldShowAudio, setShouldShowAudio ] = useState<boolean>(false)
|
||||||
|
const [ pressedKeys, setPressedKeys ] = useState<string[]>([])
|
||||||
|
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 (
|
return (
|
||||||
<main className="bg-black select-none text-white min-h-screen">
|
<main className="bg-black select-none text-white min-h-screen">
|
||||||
<Header />
|
<Header isAudioActive={shouldShowAudio} />
|
||||||
<Snow />
|
<Snow />
|
||||||
{children}
|
{children}
|
||||||
<Footer />
|
<Footer />
|
||||||
|
{shouldShowAudio && <audio onEnded={() => setShouldShowAudio(false)} autoPlay={true} src={"https://storage.alexav.gg/content/0f4ce103-62d0-4ff1-8b8b-e38becced35d.mp3"} />}
|
||||||
</main>
|
</main>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user