2025-08-14 16:40:37 +02:00

69 lines
1.4 KiB
JavaScript

export * as canvas from "./lib/canvas.js"
export * as texture from "./lib/texture.js"
export let frameDeltaT = 0;
/**
* Start a game.
*
* @param {() => void} initFunction Run once at start
* @param {() => void} loopFunction Run every frame
*/
export function startGame(loopFunction) {
let before = Date.now();
setInterval(() => {
const now = Date.now();
frameDeltaT = (now - before) / 1000;
before = now;
loopFunction();
}, 16);
}
const keysPressed = new Set();
const keyPressHandlers = new Map();
const keyReleaseHandlers = new Map();
document.body.addEventListener("keydown", (ev) => {
keysPressed.add(ev.key);
keyPressHandlers.get(ev.key)?.();
});
document.body.addEventListener("keyup", (ev) => {
keysPressed.delete(ev.key);
keyReleaseHandlers.get(ev.key)?.();
});
/**
* If a key is currently being pressed.
* @param {string} key
* @returns {boolean}
*/
export function isPressed(key) {
return keysPressed.has(key);
}
/**
* When a key is pressed (key down).
* @param {string} key
* @param {() => void} handlerFunction
*/
export function onPress(key, handlerFunction) {
keyPressHandlers.set(key, handlerFunction);
}
/**
* When a key is released (key up).
* @param {string} key
* @param {() => void} handlerFunction
*/
export function onRelease(key, handlerFunction) {
keyReleaseHandlers.set(key, handlerFunction);
}