add mouse events

This commit is contained in:
Reimar 2025-10-14 13:18:55 +02:00
parent 76831e0300
commit e38fa82d3b

View File

@ -2,6 +2,16 @@ export class Gamelib {
keysPressed = new Set(); keysPressed = new Set();
keyPressHandlers = new Map(); keyPressHandlers = new Map();
keyReleaseHandlers = new Map(); keyReleaseHandlers = new Map();
mouseMoveHandler = null;
mouseButtonsPressed = new Set();
mouseDownHandlers = new Map();
mouseUpHandlers = new Map();
mouseX = null;
mouseY = null;
MouseButtonLeft = 0;
MouseButtonRight = 1;
MouseButtonMiddle = 2;
constructor(console, codeStopper, assetProvider, canvasElement) { constructor(console, codeStopper, assetProvider, canvasElement) {
this.console = console; this.console = console;
@ -25,6 +35,27 @@ export class Gamelib {
this.keysPressed.delete(ev.key); this.keysPressed.delete(ev.key);
this.keyReleaseHandlers.get(ev.key)?.(); this.keyReleaseHandlers.get(ev.key)?.();
}); });
canvasElement.addEventListener("mousemove", (ev) => {
this.mouseX = ev.offsetX;
this.mouseY = ev.offsetY;
this.mouseMoveHandler?.(ev.offsetX, ev.offsetY, ev.movementX, ev.movementY);
});
canvasElement.addEventListener("mousedown", (ev) => {
this.mouseButtonsPressed.add(ev.button);
this.mouseDownHandlers.get(ev.button)?.(ev.offsetX, ev.offsetY);
});
canvasElement.addEventListener("mouseup", (ev) => {
this.mouseButtonsPressed.delete(ev.button);
this.mouseUpHandlers.get(ev.button)?.(ev.offsetX, ev.offsetY);
});
canvasElement.addEventListener("contextmenu", (ev) => {
ev.preventDefault();
});
} }
println(msg) { println(msg) {
@ -65,6 +96,22 @@ export class Gamelib {
this.keyReleaseHandlers.set(key, handlerFunction); this.keyReleaseHandlers.set(key, handlerFunction);
} }
onMouseMove(handlerFunction) {
this.mouseMoveHandler = handlerFunction;
}
isClicking(button = this.MouseButtonLeft) {
return this.mouseButtonsPressed.has(button);
}
onClick(handlerFunction, button = this.MouseButtonLeft) {
this.mouseDownHandlers.set(button, handlerFunction);
}
onClickRelease(handlerFunction, button = this.MouseButtonLeft) {
this.mouseUpHandlers.set(button, handlerFunction);
}
rgb(red, green, blue) { rgb(red, green, blue) {
return `rgb(${red}, ${green}, ${blue})`; return `rgb(${red}, ${green}, ${blue})`;
} }