Experimental canvas 2D engine for tile-based sidescroller/sandbox games, created strictly for educational purposes.
entity-component-system
game-engine
canvas-2d
1function createAsset(filename: string): HTMLImageElement {
2 const asset = new Image();
3 asset.src = `../assets/${filename}.png`;
4
5 return asset;
6}
7
8export function assetsLoaded(): Promise<void[]> {
9 return Promise.all(
10 Object.values(assets).map(
11 (img) =>
12 new Promise<void>((resolve, reject) => {
13 if (img.complete) return resolve();
14 img.onload = () => resolve();
15 img.onerror = () => reject(new Error(`Failed to load: ${img.src}`));
16 }),
17 ),
18 );
19}
20
21export const assets = {
22 1: createAsset("vt_dirt"),
23 2: createAsset("vt_grass"),
24 3: createAsset("vt_stone"),
25 4: createAsset("scenery_1"),
26 5: createAsset("scenery_2"),
27 6: createAsset("scenery_3"),
28};