diff --git a/client/svelte-client/src/Canvas.svelte b/client/svelte-client/src/Canvas.svelte
index 0f26dec..f4de4d4 100644
--- a/client/svelte-client/src/Canvas.svelte
+++ b/client/svelte-client/src/Canvas.svelte
@@ -3,7 +3,7 @@
import {onMount, setContext} from "svelte";
import {get, writable} from "svelte/store";
import {drawObjects} from "./game/render";
- import {width, height, pixelRatio, gameContext, props, engineCtx, engineCanvas} from "./game/engine";
+ import {width, height, pixelRatio, gameContext, props, engineCtx, engineCanvas, keysPressed} from "./game/engine";
export let killLoopOnError = true;
@@ -16,6 +16,8 @@
let debug = writable(false);
+ $: keys = $keysPressed.join(',')
+
onMount(() => {
ctx = canvas.getContext('2d');
engineCtx.set(ctx)
@@ -97,17 +99,34 @@
// height.set(window.innerHeight);
pixelRatio.set(window.devicePixelRatio);
}
-
-
-
+ function handleKeydown({key}) {
+ if ($keysPressed.includes(key)) {
+ return;
+ }
+ $keysPressed = [...$keysPressed, key]
+ }
+ function handleKeyup({key}) {
+ if (!$keysPressed.includes(key)) {
+ return;
+ }
+ $keysPressed = $keysPressed.filter(key => key !== key)
+ }
+
+
+
diff --git a/client/svelte-client/src/game/engine.ts b/client/svelte-client/src/game/engine.ts
index 97f643f..72189a8 100644
--- a/client/svelte-client/src/game/engine.ts
+++ b/client/svelte-client/src/game/engine.ts
@@ -1,4 +1,4 @@
-import {derived, writable} from "svelte/store";
+import {derived, Writable, writable} from "svelte/store";
import {getContext, onMount} from "svelte";
export const engineCanvas = writable();
@@ -7,13 +7,16 @@ export const width = writable(800);
export const height = writable(600);
export const pixelRatio = writable(window.devicePixelRatio);
+export const keysPressed: Writable = writable([])
+
// A more convenient store for grabbing all game props
export const props = deriveObject({
width,
height,
pixelRatio,
engineCanvas,
- engineCtx
+ engineCtx,
+ keysPressed
});
export const gameContext = Symbol();