totally overkill but absolutely hilarious

This commit is contained in:
2024-12-06 21:56:52 -05:00
parent 16b7a6b158
commit d6860b2508
2 changed files with 52 additions and 3 deletions
+11 -2
View File
@@ -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 (
<div className="bg-zinc-900 p-4 flex justify-between">
+41 -1
View File
@@ -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<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 (
<main className="bg-black select-none text-white min-h-screen">
<Header />
<Header isAudioActive={shouldShowAudio} />
<Snow />
{children}
<Footer />
{shouldShowAudio && <audio onEnded={() => setShouldShowAudio(false)} autoPlay={true} src={"https://storage.alexav.gg/content/0f4ce103-62d0-4ff1-8b8b-e38becced35d.mp3"} />}
</main>
)
}