export enum Action { MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN, RESET, INTERACT, } export namespace KeyConstants { export const KeyActions: Record = { 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, r: Action.RESET, }; // value -> [key] from KeyActions export const ActionKeys: Map = Object.keys( KeyActions, ).reduce((acc: Map, 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 MODAL_CONTENT_ID = "modal-content"; export const CANVAS_ID = "canvas"; }