@spibo-studio/spibo-studio
Version:
Spibo Studio is an HTML Canvas Library for creating adventure games
125 lines • 5.81 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var KeyboardInteractions = /** @class */ (function () {
function KeyboardInteractions(canvas) {
var _this = this;
this.movingUp = null;
this.movingRight = null;
this.movingDown = null;
this.movingLeft = null;
document.addEventListener('keydown', function (event) {
if (canvas.mainCharacter)
_this.move(event, canvas);
});
document.addEventListener('keyup', function (event) { return _this.stopMoving(event, canvas); });
}
KeyboardInteractions.prototype.move = function (keyboardEvent, canvas) {
var mainCharacter = canvas.mainCharacter, framerate = canvas.framerate;
if (mainCharacter) {
switch (keyboardEvent.key) {
case 'w':
case 'ArrowUp':
if (!this.movingUp) {
mainCharacter.setActiveSprite('movingUp');
this.movingUp = setInterval(mainCharacter.moveUp.bind(mainCharacter), 1000 / framerate, canvas);
}
break;
case 'a':
case 'ArrowLeft':
if (!this.movingLeft) {
mainCharacter.setActiveSprite('movingLeft');
this.movingLeft = setInterval(mainCharacter.moveLeft.bind(mainCharacter), 1000 / framerate, canvas);
}
break;
case 's':
case 'ArrowDown':
if (!this.movingDown) {
mainCharacter.setActiveSprite('movingDown');
this.movingDown = setInterval(mainCharacter.moveDown.bind(mainCharacter), 1000 / framerate, canvas);
}
break;
case 'd':
case 'ArrowRight':
if (!this.movingRight) {
mainCharacter.setActiveSprite('movingRight');
this.movingRight = setInterval(mainCharacter.moveRight.bind(mainCharacter), 1000 / framerate, canvas);
}
break;
default:
break;
}
}
};
KeyboardInteractions.prototype.stopMoving = function (keyboardEvent, canvas) {
var mainCharacter = canvas.mainCharacter;
if (mainCharacter) {
switch (keyboardEvent.key) {
case 'w':
case 'ArrowUp':
if (this.movingUp) {
clearInterval(this.movingUp);
this.movingUp = null;
if (mainCharacter.activeSprite && mainCharacter.activeSprite.name === 'movingUp') {
if (this.movingLeft)
mainCharacter.setActiveSprite('movingLeft');
else if (this.movingRight)
mainCharacter.setActiveSprite('movingRight');
else if (this.movingDown)
mainCharacter.setActiveSprite('movingDown');
}
}
break;
case 'a':
case 'ArrowLeft':
if (this.movingLeft) {
clearInterval(this.movingLeft);
this.movingLeft = null;
if (mainCharacter.activeSprite && mainCharacter.activeSprite.name === 'movingLeft') {
if (this.movingUp)
mainCharacter.setActiveSprite('movingUp');
else if (this.movingDown)
mainCharacter.setActiveSprite('movingDown');
else if (this.movingRight)
mainCharacter.setActiveSprite('movingRight');
}
}
break;
case 's':
case 'ArrowDown':
if (this.movingDown) {
clearInterval(this.movingDown);
this.movingDown = null;
if (mainCharacter.activeSprite && mainCharacter.activeSprite.name === 'movingDown') {
if (this.movingLeft)
mainCharacter.setActiveSprite('movingLeft');
else if (this.movingRight)
mainCharacter.setActiveSprite('movingRight');
else if (this.movingUp)
mainCharacter.setActiveSprite('movingUp');
}
}
break;
case 'd':
case 'ArrowRight':
if (this.movingRight) {
clearInterval(this.movingRight);
this.movingRight = null;
if (mainCharacter.activeSprite && mainCharacter.activeSprite.name === 'movingRight') {
if (this.movingUp)
mainCharacter.setActiveSprite('movingUp');
else if (this.movingDown)
mainCharacter.setActiveSprite('movingDown');
else if (this.movingLeft)
mainCharacter.setActiveSprite('movingLeft');
}
}
break;
default:
break;
}
}
};
return KeyboardInteractions;
}());
exports.default = KeyboardInteractions;
//# sourceMappingURL=KeyboardInteractions.js.map