summaryrefslogtreecommitdiff
path: root/client/src/components/GameCanvas.svelte
blob: a3f3dbc838abea0f9240e5c7a8323e851a063eed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<script lang="ts">
  import { onMount } from "svelte";
  import { loadAssets } from "@engine/config";
  import { Game } from "@engine/Game";
  import { JumpStorm } from "../JumpStorm";

  let canvas: HTMLCanvasElement;
  let ctx: CanvasRenderingContext2D;

  export let width: number;
  export let height: number;

  onMount(async () => {
    ctx = canvas.getContext("2d");
    ctx.imageSmoothingEnabled = false;

    await loadAssets();

    const game = new Game();
    const jumpStorm = new JumpStorm(game);

    const { protocol, host } = document.location;
    const isHttps = protocol.startsWith('https');
    jumpStorm.init(ctx, isHttps ? 'https' : 'http', isHttps ? 'wss' : 'ws', `${host}/api`)
        .then(() => jumpStorm.play());
  });
</script>

<canvas bind:this={canvas} {width} {height} />