export enum Action { MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN, RESET, INTERACT, } export namespace KeyConstants { export const KeyActions: Record = { a: Action.MOVE_LEFT, arrowleft: Action.MOVE_LEFT, d: Action.MOVE_RIGHT, arrowright: Action.MOVE_RIGHT, w: Action.MOVE_UP, arrowup: Action.MOVE_UP, s: Action.MOVE_DOWN, arrowdown: Action.MOVE_DOWN, " ": Action.INTERACT, enter: Action.INTERACT, }; // 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 Miscellaneous { export const WIDTH = 800; export const HEIGHT = 800; export const DEFAULT_GRID_WIDTH = 30; export const DEFAULT_GRID_HEIGHT = 30; }