From a8d07a790395e14fe7aedd3ba638db466f9c0842 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Fri, 1 Mar 2024 18:56:58 -0700 Subject: boundingbox + draw player --- src/engine/config/assets.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/engine/config/assets.ts (limited to 'src/engine/config/assets.ts') diff --git a/src/engine/config/assets.ts b/src/engine/config/assets.ts new file mode 100644 index 0000000..173bab3 --- /dev/null +++ b/src/engine/config/assets.ts @@ -0,0 +1,42 @@ +import type { SpriteSpec } from "./sprites"; +import { SPRITE_SPECS } from "./sprites"; + +export const IMAGES = new Map(); + +export const loadSpritesIntoImageElements = ( + spriteSpecs: Partial[], +): Promise[] => { + const spritePromises: Promise[] = []; + + for (const spriteSpec of spriteSpecs) { + if (spriteSpec.sheet) { + const img = new Image(); + img.src = spriteSpec.sheet; + IMAGES.set(spriteSpec.sheet, img); + + spritePromises.push( + new Promise((resolve) => { + img.onload = () => resolve(); + }), + ); + } + + if (spriteSpec.states) { + spritePromises.push( + ...loadSpritesIntoImageElements(Array.from(spriteSpec.states.values())), + ); + } + } + + return spritePromises; +}; + +export const loadAssets = () => + Promise.all([ + ...loadSpritesIntoImageElements( + Array.from(SPRITE_SPECS.keys()).map( + (key) => SPRITE_SPECS.get(key) as SpriteSpec, + ), + ), + // TODO: Sound + ]); -- cgit v1.2.3-70-g09d2