68 lines
1.4 KiB
TypeScript
68 lines
1.4 KiB
TypeScript
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,
|
|
|
|
r: Action.RESET,
|
|
};
|
|
|
|
// 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 MODAL_CONTENT_ID = "modal-content";
|
|
export const CANVAS_ID = "canvas";
|
|
}
|