summaryrefslogtreecommitdiff
path: root/src/engine/config/constants.ts
blob: c6b592e7a92fecf358b5467f34a1fd93422a9589 (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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
export enum Action {
  MOVE_LEFT,
  MOVE_RIGHT,
  MOVE_UP,
  MOVE_DOWN,
  RESET,
  INTERACT,
}

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

    d: Action.MOVE_RIGHT,
    l: Action.MOVE_RIGHT,
    arrowright: Action.MOVE_RIGHT,

    w: Action.MOVE_UP,
    k: Action.MOVE_UP,
    arrowup: Action.MOVE_UP,

    s: Action.MOVE_DOWN,
    j: Action.MOVE_DOWN,
    arrowdown: Action.MOVE_DOWN,

    " ": Action.INTERACT,
    enter: Action.INTERACT,
  };

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

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

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

export namespace PhysicsConstants {
  export const GRID_MOVEMENT_VELOCITY = 1;
}

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

  export const GRID_ROWS = 15;
  export const GRID_COLUMNS = 15;

  export const GRID_CELL_WIDTH = Math.floor(WIDTH / GRID_COLUMNS);
  export const GRID_CELL_HEIGHT = Math.floor(HEIGHT / GRID_ROWS);

  export const MODAL_ID = "modal";
  export const CANVAS_ID = "canvas";
}