UNPKG

bp-prism-game

Version:
72 lines 8.17 kB
import { COLORS, ASSET_ANIMATION } from './prism-blast-constants'; import { AssetClass } from '../../asset/asset.class'; /** * The Prism Blast Class */ export class PrismBlastClass extends AssetClass { /** * Constructor * @param gameService The GameService * @param ctx The ctx * @param guid The guid of the prism blast */ constructor(gameService, ctx, guid) { super(gameService, ctx, guid); this.isDestroyed = true; this.assetAnimations = ASSET_ANIMATION; this.assetAnimation = this.assetAnimations[0]; } /** * Draw everything necessary */ draw() { this.ctx.save(); this.ctx.translate(this.x, this.y); this.ctx.scale(1, 1); this.ctx.rotate(this.angle); this.drawPrismBlast(); this.ctx.restore(); } /** * Set the Blast Angle * @param angle The angle of the blast */ setBlastAngle(angle) { this.angle = this.gameService.getRadians(angle); } /** * Draw the base */ drawPrismBlast() { this.assetAnimation.forEach((row, y) => { row.forEach((value, x) => { if (x === 0) { this.ctx.globalAlpha = 0.4; this.ctx.fillStyle = COLORS[0]; this.ctx.fillRect(x - 0.2, y, x + this.getAssetHeight() + 0.4, 1); } if (value > 0) { this.ctx.globalAlpha = 1; this.ctx.fillStyle = COLORS[value]; this.ctx.fillRect(x, y, 1, 1); } }); }); } /** * Animate the prism blast * @param now the current time */ animate(now = 0) { this.assetTimer.elapsed = now - this.assetTimer.start; if (this.stopAnimation()) { return; } if (this.assetTimer.elapsed > 100) { this.assetTimer.start = now; this.assetAnimation = this.assetAnimations[this.animationCounter++ % this.assetAnimations.length]; } this.draw(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpc20tYmxhc3QuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmlzbS9zcmMvbGliL3ByaXNtL3ByaXNtLWJsYXN0L3ByaXNtLWJsYXN0LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsVUFBVTtJQWM3Qzs7Ozs7T0FLRztJQUNILFlBQVksV0FBd0IsRUFBRSxHQUE2QixFQUFFLElBQVk7UUFDL0UsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNPLElBQUk7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWEsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssY0FBYztRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO29CQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNuRTtnQkFFRCxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO29CQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUMvQjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUV0RCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkc7UUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT0xPUlMsIEFTU0VUX0FOSU1BVElPTiB9IGZyb20gJy4vcHJpc20tYmxhc3QtY29uc3RhbnRzJztcbmltcG9ydCB7IEdhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9nYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXNzZXRDbGFzcyB9IGZyb20gJy4uLy4uL2Fzc2V0L2Fzc2V0LmNsYXNzJztcblxuLyoqXG4gKiBUaGUgUHJpc20gQmxhc3QgQ2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIFByaXNtQmxhc3RDbGFzcyBleHRlbmRzIEFzc2V0Q2xhc3Mge1xuICAvKipcbiAgICogVGhlIGFzc2V0IHRvIGFuaW1hdGVcbiAgICovXG4gIHByaXZhdGUgYXNzZXRBbmltYXRpb246IG51bWJlcltdW107XG4gIC8qKlxuICAgKiBBc3NldCBBbmltYXRpb25zXG4gICAqL1xuICBwcml2YXRlIGFzc2V0QW5pbWF0aW9uczogbnVtYmVyW11bXVtdO1xuICAvKipcbiAgICogVGhlIGFuZ2xlIG9mIHRoZSBibGFzdFxuICAgKi9cbiAgcHJpdmF0ZSBhbmdsZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0gZ2FtZVNlcnZpY2UgVGhlIEdhbWVTZXJ2aWNlXG4gICAqIEBwYXJhbSBjdHggVGhlIGN0eFxuICAgKiBAcGFyYW0gZ3VpZCBUaGUgZ3VpZCBvZiB0aGUgcHJpc20gYmxhc3RcbiAgICovXG4gIGNvbnN0cnVjdG9yKGdhbWVTZXJ2aWNlOiBHYW1lU2VydmljZSwgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIGd1aWQ6IG51bWJlcikge1xuICAgIHN1cGVyKGdhbWVTZXJ2aWNlLCBjdHgsIGd1aWQpO1xuICAgIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIHRoaXMuYXNzZXRBbmltYXRpb25zID0gQVNTRVRfQU5JTUFUSU9OO1xuICAgIHRoaXMuYXNzZXRBbmltYXRpb24gPSB0aGlzLmFzc2V0QW5pbWF0aW9uc1swXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEcmF3IGV2ZXJ5dGhpbmcgbmVjZXNzYXJ5XG4gICAqL1xuICBwcm90ZWN0ZWQgZHJhdygpOiB2b2lkIHtcbiAgICB0aGlzLmN0eC5zYXZlKCk7XG4gICAgdGhpcy5jdHgudHJhbnNsYXRlKHRoaXMueCwgdGhpcy55KTtcbiAgICB0aGlzLmN0eC5zY2FsZSgxLCAxKTtcbiAgICB0aGlzLmN0eC5yb3RhdGUodGhpcy5hbmdsZSk7XG4gICAgdGhpcy5kcmF3UHJpc21CbGFzdCgpO1xuICAgIHRoaXMuY3R4LnJlc3RvcmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIEJsYXN0IEFuZ2xlXG4gICAqIEBwYXJhbSBhbmdsZSBUaGUgYW5nbGUgb2YgdGhlIGJsYXN0XG4gICAqL1xuICBwdWJsaWMgc2V0Qmxhc3RBbmdsZShhbmdsZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5hbmdsZSA9IHRoaXMuZ2FtZVNlcnZpY2UuZ2V0UmFkaWFucyhhbmdsZSk7XG4gIH1cblxuICAvKipcbiAgICogRHJhdyB0aGUgYmFzZVxuICAgKi9cbiAgcHJpdmF0ZSBkcmF3UHJpc21CbGFzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFzc2V0QW5pbWF0aW9uLmZvckVhY2goKHJvdywgeSkgPT4ge1xuICAgICAgcm93LmZvckVhY2goKHZhbHVlLCB4KSA9PiB7XG4gICAgICAgIGlmICh4ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5jdHguZ2xvYmFsQWxwaGEgPSAwLjQ7XG4gICAgICAgICAgdGhpcy5jdHguZmlsbFN0eWxlID0gQ09MT1JTWzBdO1xuICAgICAgICAgIHRoaXMuY3R4LmZpbGxSZWN0KHggLSAwLjIsIHksIHggKyB0aGlzLmdldEFzc2V0SGVpZ2h0KCkgKyAwLjQsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xuICAgICAgICAgIHRoaXMuY3R4Lmdsb2JhbEFscGhhID0gMTtcbiAgICAgICAgICB0aGlzLmN0eC5maWxsU3R5bGUgPSBDT0xPUlNbdmFsdWVdO1xuICAgICAgICAgIHRoaXMuY3R4LmZpbGxSZWN0KHgsIHksIDEsIDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbmltYXRlIHRoZSBwcmlzbSBibGFzdFxuICAgKiBAcGFyYW0gbm93IHRoZSBjdXJyZW50IHRpbWVcbiAgICovXG4gIHB1YmxpYyBhbmltYXRlKG5vdyA9IDApOiB2b2lkIHtcbiAgICB0aGlzLmFzc2V0VGltZXIuZWxhcHNlZCA9IG5vdyAtIHRoaXMuYXNzZXRUaW1lci5zdGFydDtcblxuICAgIGlmICh0aGlzLnN0b3BBbmltYXRpb24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFzc2V0VGltZXIuZWxhcHNlZCA+IDEwMCkge1xuICAgICAgdGhpcy5hc3NldFRpbWVyLnN0YXJ0ID0gbm93O1xuICAgICAgdGhpcy5hc3NldEFuaW1hdGlvbiA9IHRoaXMuYXNzZXRBbmltYXRpb25zW3RoaXMuYW5pbWF0aW9uQ291bnRlcisrICUgdGhpcy5hc3NldEFuaW1hdGlvbnMubGVuZ3RoXTtcbiAgICB9XG5cbiAgICB0aGlzLmRyYXcoKTtcbiAgfVxufVxuIl19