bp-space-invaders
Version:
The BP Space Invaders Game
61 lines • 8.24 kB
JavaScript
import { ASSET_ANIMATION, COLORS } from './number-constants';
import { AssetClass } from '../asset/asset.class';
export class NumberClass extends AssetClass {
constructor(gameService, ctx, boundarySetup, color) {
super(gameService, ctx, boundarySetup, 0);
this.color = color;
this.numbers = [];
}
spawn() {
this.assetAnimation = ASSET_ANIMATION[0];
this.engineAnimation = [];
this.destructionAnimations = [];
super.spawn();
}
draw() {
this.ctx.save();
this.ctx.translate(this.x, this.y);
this.ctx.scale(2, 2);
this.drawNumber();
this.ctx.restore();
}
drawNumber() {
let offset = 0;
this.ctx.fillStyle = COLORS[this.color];
this.numbers.map((scoreNumber) => {
this.assetAnimation = ASSET_ANIMATION[scoreNumber];
this.assetAnimation.forEach((row, y) => {
row.forEach((value, x) => {
if (value > 0) {
this.ctx.fillRect(x + offset, y, 1, 1);
}
});
});
offset += 10;
});
}
padPoints(points) {
let stringPoints = points.toString();
if (points < 10) {
stringPoints = `000${points}`;
}
else if (points < 100) {
stringPoints = `00${points}`;
}
else if (points < 1000) {
stringPoints = `0${points}`;
}
return stringPoints;
}
setNumber(inputNumber, isPadNumber = true) {
const numbers = isPadNumber ? this.padPoints(inputNumber) : [inputNumber];
this.numbers = [];
for (const index of numbers) {
this.numbers.push(Number(index));
}
}
animate() {
this.draw();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BhY2UtaW52YWRlcnMvc3JjL2xpYi9udW1iZXIvbnVtYmVyLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBTWxELE1BQU0sT0FBTyxXQUFZLFNBQVEsVUFBVTtJQWF6QyxZQUNFLFdBQXdCLEVBQ3hCLEdBQTZCLEVBQzdCLGFBQWlDLEVBQ3pCLEtBQWE7UUFFckIsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRmxDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFHckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUtrQixLQUFLO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDaEMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFLUyxJQUFJO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUtPLFVBQVU7UUFDaEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQW1CLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUVuRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO3dCQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDeEM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFPTyxTQUFTLENBQUMsTUFBYztRQUM5QixJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsSUFBSSxNQUFNLEdBQUcsRUFBRSxFQUFFO1lBQ2YsWUFBWSxHQUFHLE1BQU0sTUFBTSxFQUFFLENBQUM7U0FDL0I7YUFBTSxJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDdkIsWUFBWSxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7U0FDOUI7YUFBTSxJQUFJLE1BQU0sR0FBRyxJQUFJLEVBQUU7WUFDeEIsWUFBWSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7U0FDN0I7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBTU0sU0FBUyxDQUFDLFdBQW1CLEVBQUUsV0FBVyxHQUFHLElBQUk7UUFDdEQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUtNLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBU1NFVF9BTklNQVRJT04sIENPTE9SUyB9IGZyb20gJy4vbnVtYmVyLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBHYW1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvZ2FtZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFzc2V0Q2xhc3MgfSBmcm9tICcuLi9hc3NldC9hc3NldC5jbGFzcyc7XG5pbXBvcnQgeyBCb3VuZGFyeVNldHVwTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9ib3VuZGFyeS1zZXQubW9kZWwnO1xuXG4vKipcbiAqIFRoZSBOdW1iZXIgQ2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIE51bWJlckNsYXNzIGV4dGVuZHMgQXNzZXRDbGFzcyB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyc1xuICAgKi9cbiAgcHJpdmF0ZSBudW1iZXJzOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3JcbiAgICogQHBhcmFtIGdhbWVTZXJ2aWNlIFRoZSBHYW1lU2VydmljZVxuICAgKiBAcGFyYW0gY3R4IFRoZSBjdHhcbiAgICogQHBhcmFtIGJvdW5kYXJ5U2V0dXAgVGhlIEJvdW5kYXJ5U2V0dXBNb2RlbFxuICAgKiBAcGFyYW0gY29sb3IgVGhlIENvbG9yIG9mIHRoZSBudW1iZXJzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBnYW1lU2VydmljZTogR2FtZVNlcnZpY2UsXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgYm91bmRhcnlTZXR1cDogQm91bmRhcnlTZXR1cE1vZGVsLFxuICAgIHByaXZhdGUgY29sb3I6IG51bWJlclxuICApIHtcbiAgICBzdXBlcihnYW1lU2VydmljZSwgY3R4LCBib3VuZGFyeVNldHVwLCAwKTtcbiAgICB0aGlzLm51bWJlcnMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGF3biB0aGUgYm9tYlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNwYXduKCk6IHZvaWQge1xuICAgIHRoaXMuYXNzZXRBbmltYXRpb24gPSBBU1NFVF9BTklNQVRJT05bMF07XG4gICAgdGhpcy5lbmdpbmVBbmltYXRpb24gPSBbXTtcbiAgICB0aGlzLmRlc3RydWN0aW9uQW5pbWF0aW9ucyA9IFtdO1xuICAgIHN1cGVyLnNwYXduKCk7XG4gIH1cblxuICAvKipcbiAgICogRHJhdyBldmVueXRoaW5nIG5lY2Vzc2FyeVxuICAgKi9cbiAgcHJvdGVjdGVkIGRyYXcoKTogdm9pZCB7XG4gICAgdGhpcy5jdHguc2F2ZSgpO1xuICAgIHRoaXMuY3R4LnRyYW5zbGF0ZSh0aGlzLngsIHRoaXMueSk7XG4gICAgdGhpcy5jdHguc2NhbGUoMiwgMik7XG4gICAgdGhpcy5kcmF3TnVtYmVyKCk7XG4gICAgdGhpcy5jdHgucmVzdG9yZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERyYXcgdGhlIGJvbWJcbiAgICovXG4gIHByaXZhdGUgZHJhd051bWJlcigpOiB2b2lkIHtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICB0aGlzLmN0eC5maWxsU3R5bGUgPSBDT0xPUlNbdGhpcy5jb2xvcl07XG4gICAgdGhpcy5udW1iZXJzLm1hcCgoc2NvcmVOdW1iZXI6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy5hc3NldEFuaW1hdGlvbiA9IEFTU0VUX0FOSU1BVElPTltzY29yZU51bWJlcl07XG5cbiAgICAgIHRoaXMuYXNzZXRBbmltYXRpb24uZm9yRWFjaCgocm93LCB5KSA9PiB7XG4gICAgICAgIHJvdy5mb3JFYWNoKCh2YWx1ZSwgeCkgPT4ge1xuICAgICAgICAgIGlmICh2YWx1ZSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuY3R4LmZpbGxSZWN0KHggKyBvZmZzZXQsIHksIDEsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgb2Zmc2V0ICs9IDEwO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhZCB0aGUgcG9pbnRzXG4gICAqXG4gICAqIEBwYXJhbSBwb2ludHMgVGhlIHBvaW50cyB0byBwYWRcbiAgICovXG4gIHByaXZhdGUgcGFkUG9pbnRzKHBvaW50czogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgc3RyaW5nUG9pbnRzID0gcG9pbnRzLnRvU3RyaW5nKCk7XG4gICAgaWYgKHBvaW50cyA8IDEwKSB7XG4gICAgICBzdHJpbmdQb2ludHMgPSBgMDAwJHtwb2ludHN9YDtcbiAgICB9IGVsc2UgaWYgKHBvaW50cyA8IDEwMCkge1xuICAgICAgc3RyaW5nUG9pbnRzID0gYDAwJHtwb2ludHN9YDtcbiAgICB9IGVsc2UgaWYgKHBvaW50cyA8IDEwMDApIHtcbiAgICAgIHN0cmluZ1BvaW50cyA9IGAwJHtwb2ludHN9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nUG9pbnRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgTnVtYmVyc1xuICAgKiBAcGFyYW0gaW5wdXROdW1iZXIgdGhlIG51bWJlciB0byBkaXNwbGF5XG4gICAqL1xuICBwdWJsaWMgc2V0TnVtYmVyKGlucHV0TnVtYmVyOiBudW1iZXIsIGlzUGFkTnVtYmVyID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IG51bWJlcnMgPSBpc1BhZE51bWJlciA/IHRoaXMucGFkUG9pbnRzKGlucHV0TnVtYmVyKSA6IFtpbnB1dE51bWJlcl07XG4gICAgdGhpcy5udW1iZXJzID0gW107XG4gICAgZm9yIChjb25zdCBpbmRleCBvZiBudW1iZXJzKSB7XG4gICAgICB0aGlzLm51bWJlcnMucHVzaChOdW1iZXIoaW5kZXgpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQW5pbWF0ZSB0aGUgYm9tYlxuICAgKi9cbiAgcHVibGljIGFuaW1hdGUoKTogdm9pZCB7XG4gICAgdGhpcy5kcmF3KCk7XG4gIH1cbn1cbiJdfQ==