import {Trait} from '../Entity'; export default class KeyboardControls extends Trait { constructor(entity) { super(entity, "keyboardControls"); this.speed = 500; this.map = { KeyA: 'left', KeyD: 'right', }; this.pressed = {}; } onkey(evt) { let name = this.map[evt.code]; if (name == null) return; evt.preventDefault(); this.pressed[name] = evt.type === 'keydown'; } init() { window.addEventListener("keydown", e => this.onkey(e)); window.addEventListener("keyup", e => this.onkey(e)); } update(dt) { if (this.pressed.left) this.entity.velocity.x -= this.speed * dt; if (this.pressed.right) this.entity.velocity.x += this.speed * dt; } }