UNPKG

migalib

Version:

MIGAlib - MInimal GAme LIBrary

115 lines (114 loc) 4.25 kB
"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();