juno-console
Version:
Juno is a clean and lightweight 2D game framework written in TypeScript for making tiny HTML5 Games.
98 lines (97 loc) • 2.89 kB
JavaScript
"use strict";
/**
* @author Digitsensitive <digit.sensitivee@gmail.com>
* @copyright 2018 Digitsensitive
* @description Juno Core: Input Class
* @license {@link https://github.com/digitsensitive/juno-console/blob/master/license.txt|MIT License}
*/
Object.defineProperty(exports, "__esModule", { value: true });
class Input {
constructor(cr) {
this.cr = cr;
this.mouse = {};
this.registerEvents();
if (this.cr.options.inputs.keyboard) {
this.lastKeyPressed = -1;
this.registerKeyboardKeys();
}
}
registerEvents() {
if (this.cr.options.inputs.mouse) {
this.cr.canvas.addEventListener("mousemove", e => {
var rect = this.cr.canvas.getBoundingClientRect();
this.mouse.x = (e.x - rect.left) / this.cr.options.scaleFactor;
this.mouse.y = (e.y - rect.top) / this.cr.options.scaleFactor;
});
this.cr.canvas.addEventListener("mousedown", e => {
if (e.button === 0) {
this.currentMouseKey = "L";
}
else if (e.button === 1) {
this.currentMouseKey = "M";
}
else if (e.button === 2) {
this.currentMouseKey = "R";
}
});
this.cr.canvas.addEventListener("mouseup", e => {
this.currentMouseKey = "";
});
}
if (this.cr.options.inputs.keyboard) {
window.addEventListener("keydown", e => {
this.keys.set(e.keyCode, true);
});
window.addEventListener("keyup", e => {
this.lastKeyPressed = -1;
this.keys.set(e.keyCode, false);
});
}
}
registerKeyboardKeys() {
this.keys = new Map([
[38, false],
[40, false],
[37, false],
[39, false],
[65, false],
[66, false],
[88, false],
[89, false]
]);
}
getMouse() {
return {
x: Math.round(this.mouse.x),
y: Math.round(this.mouse.y),
button: this.currentMouseKey
};
}
getMousePosition() {
return this.mouse;
}
getMouseButton() {
return this.currentMouseKey;
}
isDown(code) {
if (this.keys.get(code)) {
return true;
}
else {
return false;
}
}
justDown(code) {
if (this.keys.get(code)) {
if (this.lastKeyPressed === code) {
this.lastKeyPressed = code;
return false;
}
else {
this.lastKeyPressed = code;
return true;
}
}
}
}
exports.Input = Input;