Karolis' playground dv-svelte / master src / Sandbox.svelte
master

Tree @master (Download .tar.gz)

Sandbox.svelte @masterraw · history · blame

<script lang="ts">
    import Display from "./Display.svelte";
    import { writable } from "svelte/store";
    import World from "./World.svelte";

    type coords = [number, number];

    const t = writable<coords>([0, 0]);

    const controls: { [k: string]: (c: coords) => coords } = {
        ArrowUp: (v: coords) => {
            v[1]--;
            return v;
        },
        ArrowDown: (v: coords) => {
            v[1]++;
            return v;
        },
        ArrowLeft: (v: coords) => {
            v[0]--;
            return v;
        },
        ArrowRight: (v: coords) => {
            v[0]++;
            return v;
        },
    };
    function key(e: KeyboardEvent) {
        const tt = controls[e.code];
        if (tt) {
            e.preventDefault();
            t.update(tt);
            return;
        }
    }

    let scale = 50;
</script>

<svelte:window on:keydown={key} />
<div>
    {$t}
    <input type="number" bind:value={scale} />
</div>
<div>
    <Display {scale} width={20} height={20} x={$t[0]} y={$t[1]}>
        <World />
    </Display>
</div>