migalib
Version:
MIGAlib - MInimal GAme LIBrary
115 lines (114 loc) • 4.25 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Mouse = void 0;
var gameloop_1 = require("./gameloop");
var MouseSingleton = /** @class */ (function () {
function MouseSingleton() {
this.mouseX = 0;
this.mouseY = 0;
this.leftMouseButtonPressed = false;
this.rightMouseButtonPressed = false;
this.middleMouseButtonPressed = false;
this.scrollUp = false;
this.scrollDown = false;
this.scrollTimer = 0;
this.onMouseMove = this.onMouseMove.bind(this);
this.onMouseDown = this.onMouseDown.bind(this);
this.onMouseUp = this.onMouseUp.bind(this);
this.onContextMenu = this.onContextMenu.bind(this);
this.onWheel = this.onWheel.bind(this);
}
MouseSingleton.prototype.init = function (displayCanvas) {
this.displayCanvas = displayCanvas;
this.displayCanvas.oncontextmenu = this.onContextMenu;
window.addEventListener("mousemove", this.onMouseMove);
window.addEventListener("mousedown", this.onMouseDown);
window.addEventListener("mouseup", this.onMouseUp);
window.addEventListener("wheel", this.onWheel);
};
MouseSingleton.prototype.update = function () {
if (this.scrollTimer > 0) {
this.scrollTimer -= gameloop_1.GameLoop.getDeltaTime();
}
if (this.scrollTimer <= 0) {
this.scrollUp = false;
this.scrollDown = false;
}
};
MouseSingleton.prototype.onWheel = function (event) {
this.scrollUp = event.deltaY < 0;
this.scrollDown = event.deltaY > 0;
this.scrollTimer = 0.032;
};
MouseSingleton.prototype.onContextMenu = function () {
return false;
};
MouseSingleton.prototype.onMouseDown = function (event) {
if (event.button === 0) {
this.leftMouseButtonPressed = true;
}
else if (event.button === 1) {
this.middleMouseButtonPressed = true;
}
else if (event.button === 2) {
this.rightMouseButtonPressed = true;
}
};
MouseSingleton.prototype.onMouseUp = function (event) {
if (event.button === 0) {
this.leftMouseButtonPressed = false;
}
else if (event.button === 1) {
this.middleMouseButtonPressed = false;
}
else if (event.button === 2) {
this.rightMouseButtonPressed = false;
}
};
MouseSingleton.prototype.onMouseMove = function (event) {
var mousePosition = this.getMousePosition(event);
this.mouseX = mousePosition.x;
this.mouseY = mousePosition.y;
};
MouseSingleton.prototype.getMousePosition = function (event) {
var rect = this.displayCanvas.getBoundingClientRect();
var scaleX = this.displayCanvas.width / rect.width;
var scaleY = this.displayCanvas.height / rect.height;
return {
x: (event.clientX - rect.left) * scaleX,
y: (event.clientY - rect.top) * scaleY,
};
};
MouseSingleton.prototype.getMouseX = function () {
return this.mouseX;
};
MouseSingleton.prototype.getMouseY = function () {
return this.mouseY;
};
MouseSingleton.prototype.isLeftMouseButtonPressed = function () {
return this.leftMouseButtonPressed;
};
MouseSingleton.prototype.isRightMouseButtonPressed = function () {
return this.rightMouseButtonPressed;
};
MouseSingleton.prototype.isMiddleMouseButtonPressed = function () {
return this.middleMouseButtonPressed;
};
MouseSingleton.prototype.resetLeftMouseButton = function () {
this.leftMouseButtonPressed = false;
};
MouseSingleton.prototype.resetRightMouseButton = function () {
this.rightMouseButtonPressed = false;
};
MouseSingleton.prototype.resetMiddleMouseButton = function () {
this.middleMouseButtonPressed = false;
};
MouseSingleton.prototype.isScrollUp = function () {
return this.scrollUp;
};
MouseSingleton.prototype.isScrollDown = function () {
return this.scrollDown;
};
return MouseSingleton;
}());
exports.Mouse = new MouseSingleton();