2023-07-19 23:38:24 -04:00
|
|
|
import { Action } from "../interfaces";
|
|
|
|
|
|
|
|
export namespace KeyConstants {
|
|
|
|
export const KeyActions: Record<string, Action> = {
|
|
|
|
a: Action.MOVE_LEFT,
|
|
|
|
ArrowLeft: Action.MOVE_LEFT,
|
2023-08-21 19:22:23 -04:00
|
|
|
|
2023-07-19 23:38:24 -04:00
|
|
|
d: Action.MOVE_RIGHT,
|
|
|
|
ArrowRight: Action.MOVE_RIGHT,
|
2023-08-21 19:22:23 -04:00
|
|
|
|
2023-07-19 23:38:24 -04:00
|
|
|
w: Action.JUMP,
|
|
|
|
ArrowUp: Action.JUMP,
|
|
|
|
};
|
|
|
|
|
2023-08-21 19:22:23 -04:00
|
|
|
// value -> [key] from KeyActions
|
2023-07-19 23:38:24 -04:00
|
|
|
export const ActionKeys: Map<Action, string[]> = Object.keys(
|
2023-08-21 16:50:09 -04:00
|
|
|
KeyActions
|
2023-07-19 23:38:24 -04:00
|
|
|
).reduce((acc: Map<Action, string[]>, key) => {
|
|
|
|
const action = KeyActions[key];
|
|
|
|
|
|
|
|
if (acc.has(action)) {
|
2023-08-21 19:22:23 -04:00
|
|
|
acc.get(action)!.push(key);
|
2023-07-19 23:38:24 -04:00
|
|
|
return acc;
|
|
|
|
}
|
|
|
|
|
|
|
|
acc.set(action, [key]);
|
|
|
|
return acc;
|
2023-08-21 19:22:23 -04:00
|
|
|
}, new Map());
|
2023-07-19 23:38:24 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
export namespace PhysicsConstants {
|
|
|
|
export const MAX_JUMP_TIME_MS = 150;
|
|
|
|
export const GRAVITY = 0.0075;
|
|
|
|
export const PLAYER_MOVE_VEL = 1;
|
2023-08-12 15:49:16 -04:00
|
|
|
export const PLAYER_JUMP_ACC = -0.008;
|
|
|
|
export const PLAYER_JUMP_INITIAL_VEL = -1;
|
2023-07-19 23:38:24 -04:00
|
|
|
}
|
2023-07-21 01:22:26 -04:00
|
|
|
|
|
|
|
export namespace Miscellaneous {
|
|
|
|
export const WIDTH = 600;
|
|
|
|
export const HEIGHT = 800;
|
2023-08-21 16:50:09 -04:00
|
|
|
|
2023-08-21 19:22:23 -04:00
|
|
|
export const DEFAULT_GRID_WIDTH = 30;
|
|
|
|
export const DEFAULT_GRID_HEIGHT = 30;
|
|
|
|
|
|
|
|
export const SERVER_TICK_RATE = 5 / 100;
|
2023-07-21 01:22:26 -04:00
|
|
|
}
|