diff options
Diffstat (limited to 'engine/config/sprites.ts')
-rw-r--r-- | engine/config/sprites.ts | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/engine/config/sprites.ts b/engine/config/sprites.ts new file mode 100644 index 0000000..18bec73 --- /dev/null +++ b/engine/config/sprites.ts @@ -0,0 +1,49 @@ +export enum Sprites { + FLOOR, + TRAMPOLINE, + COFFEE, +} + +export interface SpriteSpec { + sheet: string; + width: number; + height: number; + frames: number; + msPerFrame: number; + states?: Record<string | number, Partial<SpriteSpec>>; +} + +export const SPRITE_SPECS: Map<Sprites, Partial<SpriteSpec>> = new Map< + Sprites, + SpriteSpec +>(); + +const floorSpriteSpec = { + height: 40, + frames: 3, + msPerFrame: 125, + states: {}, +}; +floorSpriteSpec.states = [40, 80, 120, 160].reduce((acc, cur) => { + acc[cur] = { + width: cur, + sheet: `/assets/floor_tile_${cur}.png`, + }; + return acc; +}, {}); +SPRITE_SPECS.set(Sprites.FLOOR, floorSpriteSpec); + +SPRITE_SPECS.set(Sprites.COFFEE, { + msPerFrame: 100, + width: 60, + height: 45, + frames: 3, + states: { + LEFT: { + sheet: "/assets/coffee_left.png", + }, + RIGHT: { + sheet: "/assets/coffee_right.png", + }, + }, +}); |