From 3787460bd8b67f893edb197d365a92ba52a69bda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com> Date: Sun, 30 Oct 2022 10:55:24 +0000 Subject: [PATCH] feat: better fullscreen actions --- examples/web/index.ts | 4 ++-- examples/web/react/app.tsx | 23 +++++++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/examples/web/index.ts b/examples/web/index.ts index cd74123f..6f37cdaa 100644 --- a/examples/web/index.ts +++ b/examples/web/index.ts @@ -406,7 +406,7 @@ class GameboyEmulator extends Observable implements Emulator { registerKeys() { document.addEventListener("keydown", (event) => { const keyCode = KEYS[event.key]; - const isArrow = KEYS[event.key] ?? false; + const isArrow = ARROW_KEYS[event.key] ?? false; if (isArrow) event.preventDefault(); if (keyCode !== undefined) { this.gameBoy!.key_press(keyCode); @@ -430,7 +430,7 @@ class GameboyEmulator extends Observable implements Emulator { document.addEventListener("keyup", (event) => { const keyCode = KEYS[event.key]; - const isArrow = KEYS[event.key] ?? false; + const isArrow = ARROW_KEYS[event.key] ?? false; if (isArrow) event.preventDefault(); if (keyCode !== undefined) { this.gameBoy!.key_lift(keyCode); diff --git a/examples/web/react/app.tsx b/examples/web/react/app.tsx index 36c13768..309445de 100644 --- a/examples/web/react/app.tsx +++ b/examples/web/react/app.tsx @@ -99,6 +99,7 @@ export const App: FC<AppProps> = ({ emulator, backgrounds = ["264653"] }) => { const [backgroundIndex, setBackgroundIndex] = useState(0); const [romInfo, setRomInfo] = useState<RomInfo>({}); const [framerate, setFramerate] = useState(0); + const [keyaction, setKeyaction] = useState<string | null>(null); const frameRef = useRef<boolean>(false); const errorRef = useRef<boolean>(false); const getPauseText = () => (paused ? "Resume" : "Pause"); @@ -136,21 +137,31 @@ export const App: FC<AppProps> = ({ emulator, backgrounds = ["264653"] }) => { await handler(undefined, require("../res/storm.png"), 0.2); }); }; - const onKeyDown = (event: KeyboardEvent) => { - - } + const onKeyDown = (event: KeyboardEvent) => {}; useEffect(() => { document.body.style.backgroundColor = `#${getBackground()}`; - }); + }, [backgroundIndex]); + useEffect(() => { + switch (keyaction) { + case "Escape": + setFullscreen(false); + setKeyaction(null); + break; + case "Fullscreen": + setFullscreen(!fullscreen); + setKeyaction(null); + break; + } + }, [keyaction]); useEffect(() => { document.addEventListener("keydown", (event) => { if (event.key === "Escape") { - setFullscreen(false); + setKeyaction("Escape"); event.stopPropagation(); event.preventDefault(); } if (event.key === "f" && event.ctrlKey === true) { - setFullscreen(true); + setKeyaction("Fullscreen"); event.stopPropagation(); event.preventDefault(); } -- GitLab