summaryrefslogtreecommitdiff
path: root/engine/config/sprites.ts
blob: 1f65c189e6ce50f7e88cf65c35af0186e0b17acd (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
export enum Sprites {
  FLOOR,
  TRAMPOLINE,
  COFFEE,
}

export interface SpriteSpec {
  sheet: string;
  width: number;
  height: number;
  frames: number;
  msPerFrame: number;
  states?: Map<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: new Map<number, Partial<SpriteSpec>>(),
};
[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<string, Partial<SpriteSpec>>(),
};
coffeeSpriteSpec.states.set("LEFT", {
  sheet: "/assets/coffee_left.png",
});
coffeeSpriteSpec.states.set("RIGHT", {
  sheet: "/assets/coffee_right.png",
});
SPRITE_SPECS.set(Sprites.COFFEE, coffeeSpriteSpec);