diff --git a/frontend/src/lib/components/games/GameLauncher.svelte b/frontend/src/lib/components/games/GameLauncher.svelte index e8f91f4..ec3f103 100644 --- a/frontend/src/lib/components/games/GameLauncher.svelte +++ b/frontend/src/lib/components/games/GameLauncher.svelte @@ -2,6 +2,7 @@ import { onMount, onDestroy } from 'svelte'; import { fade, fly } from 'svelte/transition'; import SnakeGame from './SnakeGame.svelte'; + import PhishingGame from './PhishingGame.svelte'; // konami code sequence const konamiCode = [ @@ -16,18 +17,52 @@ ]; let konamiIndex = 0; + // track ctrl+shift+p shortcut + let ctrlPressed = false; + let shiftPressed = false; + let gameVisible = false; - const currentGame = { - name: 'snake', - title: 'slop cred snake', - component: SnakeGame, - emoji: '' - }; + let currentGame = null; + + const games = [ + { + name: 'snake', + title: 'slop cred snake', + component: SnakeGame + }, + { + name: 'phishing', + title: 'slopedition', + component: PhishingGame + } + ]; + + function getRandomGame() { + return games[Math.floor(Math.random() * games.length)]; + } function handleKeyDown(e) { + // track modifier keys + if (e.key === 'Control') { + ctrlPressed = true; + } + if (e.key === 'Shift') { + shiftPressed = true; + } + + // check for ctrl+shift+p to launch random game + if (ctrlPressed && shiftPressed && (e.key === 'p' || e.key === 'P')) { + e.preventDefault(); + currentGame = getRandomGame(); + gameVisible = true; + return; + } + + // check for konami code to launch random game if (e.key === konamiCode[konamiIndex]) { konamiIndex++; if (konamiIndex === konamiCode.length) { + currentGame = getRandomGame(); gameVisible = true; konamiIndex = 0; } @@ -36,6 +71,15 @@ } } + function handleKeyUp(e) { + if (e.key === 'Control') { + ctrlPressed = false; + } + if (e.key === 'Shift') { + shiftPressed = false; + } + } + function closeGame() { gameVisible = false; } @@ -46,14 +90,16 @@ onMount(() => { window.addEventListener('keydown', handleKeyDown); + window.addEventListener('keyup', handleKeyUp); }); onDestroy(() => { window.removeEventListener('keydown', handleKeyDown); + window.removeEventListener('keyup', handleKeyUp); }); -{#if gameVisible} +{#if gameVisible && currentGame}
press esc to close