add mouse events
This commit is contained in:
parent
76831e0300
commit
e38fa82d3b
@ -2,6 +2,16 @@ export class Gamelib {
|
||||
keysPressed = new Set();
|
||||
keyPressHandlers = 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) {
|
||||
this.console = console;
|
||||
@ -25,6 +35,27 @@ export class Gamelib {
|
||||
this.keysPressed.delete(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) {
|
||||
@ -65,6 +96,22 @@ export class Gamelib {
|
||||
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) {
|
||||
return `rgb(${red}, ${green}, ${blue})`;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user