UNPKG

sounts

Version:

A tiny helper library for working with the web audio API written in TypeScript.

54 lines (53 loc) 2.05 kB
"use strict"; /* eslint-disable jsdoc/require-jsdoc */ Object.defineProperty(exports, "__esModule", { value: true }); exports.Player = void 0; const utils_1 = require("./utils"); class Player { constructor() { this.element = document.getElementById("listener"); this.x = utils_1.main.clientWidth / 2; this.y = utils_1.main.clientHeight / 2; this.angle = 0; this.keys = { ArrowUp: false, ArrowDown: false, ArrowLeft: false, ArrowRight: false, }; (0, utils_1.moveElementTo)(this.element, this.x, this.y); window.addEventListener("keydown", (e) => { if (e.code in this.keys) { this.keys[e.code] = true; e.preventDefault(); e.stopPropagation(); } }); window.addEventListener("keyup", (e) => { if (e.code in this.keys) { this.keys[e.code] = false; e.preventDefault(); e.stopPropagation(); } }); } update(deltaTime) { let deltaAngle = 0; if (this.keys.ArrowRight) deltaAngle += 1; if (this.keys.ArrowLeft) deltaAngle -= 1; this.angle = (360 + this.angle + deltaTime * deltaAngle * 0.2) % 360; this.element.style.transform = `rotate(${this.angle}deg)`; if ((this.keys.ArrowUp || this.keys.ArrowDown) && this.keys.ArrowUp !== this.keys.ArrowDown) { const moveAngle = (this.keys.ArrowUp ? this.angle - 90 : this.angle + 90) * utils_1.DEG_TO_RAD; const dx = Math.cos(moveAngle); const dy = Math.sin(moveAngle); const speed = deltaTime * 0.1; this.x = Math.min(utils_1.main.clientWidth - 50, Math.max(50, this.x + dx * speed)); this.y = Math.min(utils_1.main.clientHeight - 50, Math.max(50, this.y + dy * speed)); (0, utils_1.moveElementTo)(this.element, this.x, this.y); } } } exports.Player = Player;