export enum Sprites { FLOOR, TRAMPOLINE, COFFEE, } export interface SpriteSpec { sheet: string; width: number; height: number; frames: number; msPerFrame: number; states?: Map>; } export const SPRITE_SPECS: Map> = new Map< Sprites, SpriteSpec >(); const floorSpriteSpec = { height: 40, frames: 3, msPerFrame: 125, states: new Map>(), }; [40, 80, 120, 160].forEach((width) => { floorSpriteSpec.states.set(width, { width, sheet: `/assets/floor_tile_${width}.png`, }); }); SPRITE_SPECS.set(Sprites.FLOOR, floorSpriteSpec); const coffeeSpriteSpec = { msPerFrame: 100, width: 60, height: 45, frames: 3, states: new Map>(), }; coffeeSpriteSpec.states.set("LEFT", { sheet: "/assets/coffee_left.png", }); coffeeSpriteSpec.states.set("RIGHT", { sheet: "/assets/coffee_right.png", }); SPRITE_SPECS.set(Sprites.COFFEE, coffeeSpriteSpec);