feat(#3): simplify code

This commit is contained in:
Juan Sebastián Montoya 2024-07-14 02:24:26 -05:00
parent 6c1e0019f7
commit 80292d6cce
26 changed files with 1251 additions and 1672 deletions

41
modules/canvas-resizer.js Normal file
View file

@ -0,0 +1,41 @@
export class CanvasResizer {
/**
* Creates a new instance of `CanvasResizer` class.
* @param {Object} config - The configuration options for the class.
* @param {HTMLCanvasElement} config.canvas - The canvas element to resize.
* @param {number} config.width - The native width.
* @param {number} config.height - The native height.
* @param {number} config.percentage - The percentage of the screen size to use for the canvas.
*/
constructor({ canvas, width, height, percentage }) {
this.canvas = canvas;
this.width = width;
this.height = height;
this.percentage = percentage;
this.canvas.width = this.width;
this.canvas.height = this.height;
}
load() {
return new Promise((resolve) => {
["load", "resize"].map(item => window.addEventListener(item, () => {
this._resize();
if (item === "load") {
resolve();
}
}));
})
}
_resize() {
let canvasWidth = Math.floor(window.innerWidth * this.percentage);
let canvasHeight = Math.floor(canvasWidth / (this.width / this.height));
if (canvasHeight >= window.innerHeight * this.percentage) {
canvasHeight = Math.floor(window.innerHeight * this.percentage);
canvasWidth = Math.floor(canvasHeight / (this.height / this.width))
}
this.canvas.style.width = canvasWidth + 'px';
this.canvas.style.height = canvasHeight + 'px';
}
}

4
modules/utils.js Normal file
View file

@ -0,0 +1,4 @@
export async function getLevel(name) {
const level = await fetch("/resources/" + name + ".json")
return await level.json()
}