UNPKG

@spibo-studio/spibo-studio

Version:

Spibo Studio is an HTML Canvas Library for creating adventure games

125 lines 5.81 kB
"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