summaryrefslogtreecommitdiff
path: root/engine/config/constants.ts
blob: e93986b7cf95bf0e8ef24dc536febc927a53ab5e (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
import { Action } from "../interfaces";

export namespace KeyConstants {
  export const KeyActions: Record<string, Action> = {
    a: Action.MOVE_LEFT,
    ArrowLeft: Action.MOVE_LEFT,

    d: Action.MOVE_RIGHT,
    ArrowRight: Action.MOVE_RIGHT,

    w: Action.JUMP,
    ArrowUp: Action.JUMP,
  };

  // value -> [key] from KeyActions
  export const ActionKeys: Map<Action, string[]> = Object.keys(
    KeyActions,
  ).reduce((acc: Map<Action, string[]>, key) => {
    const action = KeyActions[key];

    if (acc.has(action)) {
      acc.get(action)!.push(key);
      return acc;
    }

    acc.set(action, [key]);
    return acc;
  }, new Map());
}

export namespace PhysicsConstants {
  export const MAX_JUMP_TIME_MS = 150;
  export const GRAVITY = 0.0075;
  export const PLAYER_MOVE_VEL = 1;
  export const PLAYER_JUMP_ACC = -0.008;
  export const PLAYER_JUMP_INITIAL_VEL = -1;
}

export namespace Miscellaneous {
  export const WIDTH = 600;
  export const HEIGHT = 800;

  export const DEFAULT_GRID_WIDTH = 30;
  export const DEFAULT_GRID_HEIGHT = 30;
}