summaryrefslogtreecommitdiff
path: root/engine/config/sprites.ts
blob: 18bec73948f2bd28be77e8edbd7357fc30ff56a0 (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
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",
    },
  },
});