UNPKG

bp-space-invaders

Version:
53 lines 8.63 kB
import { NumberClass } from '../number/number.class'; import { ObservableTypeEnum } from '../enum/observable-type.enum'; export class TextService { constructor(gameService, ctx, boundary) { this.gameService = gameService; this.ctx = ctx; this.scoreClass = new NumberClass(this.gameService, this.ctx, boundary, 1); this.highScoreClass = new NumberClass(this.gameService, this.ctx, boundary, 2); this.isDisplayed = true; this.scoreClass.move({ x: 160, y: 0 }); this.highScoreClass.move({ x: 20, y: 0 }); this.gameService.getMasterObservable().subscribe((resultModel) => { if (resultModel.type === ObservableTypeEnum.displayScore) { this.isDisplayed = resultModel.booleanData; } else if (resultModel.type === ObservableTypeEnum.gameStarted) { this.isDisplayed = true; } }); } animate() { if (!this.isDisplayed) { return; } this.scoreClass.animate(); this.highScoreClass.animate(); } setScore(points) { this.scoreClass.setNumber(points); } setHighScore(points) { this.highScoreClass.setNumber(points); } displayText(text, fontColor, leftOffset) { const gameboard = this.gameService.getGameboard(); this.ctx.fillStyle = 'black'; const gameOverBoxWidth = 100; const gameOverBoxHeight = 50; const gameOverXCenter = (gameboard.width - gameOverBoxWidth) / 2; const gameOverYCenter = (gameboard.height - gameOverBoxHeight) / 2; this.ctx.fillRect(gameOverXCenter, gameOverYCenter, gameOverBoxWidth, gameOverBoxHeight); this.ctx.font = '10px "Press Start 2P", cursive'; this.ctx.fillStyle = fontColor; this.ctx.fillText(text, gameOverXCenter + leftOffset, gameOverYCenter + 30); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BhY2UtaW52YWRlcnMvc3JjL2xpYi9zZXJ2aWNlL3RleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFLbEUsTUFBTSxPQUFPLFdBQVc7SUFtQnRCLFlBQW9CLFdBQXdCLEVBQVUsR0FBNkIsRUFBRSxRQUE0QjtRQUE3RixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQTBCO1FBQ2pGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbkIsQ0FBQyxFQUFFLEdBQUc7WUFDTixDQUFDLEVBQUUsQ0FBQztTQUNLLENBQUMsQ0FBQztRQUViLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FBQyxFQUFFLENBQUM7U0FDSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBNEIsRUFBRSxFQUFFO1lBQ2hGLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQzthQUM1QztpQkFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsV0FBVyxFQUFFO2dCQUM5RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzthQUN6QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQU1NLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQU1NLFFBQVEsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFNTSxZQUFZLENBQUMsTUFBYztRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBU0QsV0FBVyxDQUFDLElBQVksRUFBRSxTQUFpQixFQUFFLFVBQWtCO1FBQzdELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQzdCLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBQzdCLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRSxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLGdDQUFnQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxHQUFHLFVBQVUsRUFBRSxlQUFlLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2FtZVNlcnZpY2UgfSBmcm9tICcuL2dhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBOdW1iZXJDbGFzcyB9IGZyb20gJy4uL251bWJlci9udW1iZXIuY2xhc3MnO1xuaW1wb3J0IHsgSUFzc2V0IH0gZnJvbSAnLi4vaW50ZXJmYWNlL2Fzc2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCb3VuZGFyeVNldHVwTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9ib3VuZGFyeS1zZXQubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvb2JzZXJ2YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlVHlwZUVudW0gfSBmcm9tICcuLi9lbnVtL29ic2VydmFibGUtdHlwZS5lbnVtJztcblxuLyoqXG4gKiBUaGUgdGV4dCBzZXJ2aWNlXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXh0U2VydmljZSB7XG4gIC8qKlxuICAgKiBUaGUgc2NvcmVcbiAgICovXG4gIHByaXZhdGUgc2NvcmVDbGFzczogTnVtYmVyQ2xhc3M7XG5cbiAgLyoqXG4gICAqIFRoZSBoaWdoIHNjb3JlXG4gICAqL1xuICBwcml2YXRlIGhpZ2hTY29yZUNsYXNzOiBOdW1iZXJDbGFzcztcblxuICAvKipcbiAgICogSWYgdGhlIHNjb3JlIGJvYXJkIGlzIGRpc3BsYXllZFxuICAgKi9cbiAgcHJpdmF0ZSBpc0Rpc3BsYXllZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdhbWVTZXJ2aWNlOiBHYW1lU2VydmljZSwgcHJpdmF0ZSBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgYm91bmRhcnk6IEJvdW5kYXJ5U2V0dXBNb2RlbCkge1xuICAgIHRoaXMuc2NvcmVDbGFzcyA9IG5ldyBOdW1iZXJDbGFzcyh0aGlzLmdhbWVTZXJ2aWNlLCB0aGlzLmN0eCwgYm91bmRhcnksIDEpO1xuXG4gICAgdGhpcy5oaWdoU2NvcmVDbGFzcyA9IG5ldyBOdW1iZXJDbGFzcyh0aGlzLmdhbWVTZXJ2aWNlLCB0aGlzLmN0eCwgYm91bmRhcnksIDIpO1xuXG4gICAgdGhpcy5pc0Rpc3BsYXllZCA9IHRydWU7XG5cbiAgICB0aGlzLnNjb3JlQ2xhc3MubW92ZSh7XG4gICAgICB4OiAxNjAsXG4gICAgICB5OiAwXG4gICAgfSBhcyBJQXNzZXQpO1xuXG4gICAgdGhpcy5oaWdoU2NvcmVDbGFzcy5tb3ZlKHtcbiAgICAgIHg6IDIwLFxuICAgICAgeTogMFxuICAgIH0gYXMgSUFzc2V0KTtcblxuICAgIHRoaXMuZ2FtZVNlcnZpY2UuZ2V0TWFzdGVyT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgocmVzdWx0TW9kZWw6IE9ic2VydmFibGVNb2RlbCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdE1vZGVsLnR5cGUgPT09IE9ic2VydmFibGVUeXBlRW51bS5kaXNwbGF5U2NvcmUpIHtcbiAgICAgICAgdGhpcy5pc0Rpc3BsYXllZCA9IHJlc3VsdE1vZGVsLmJvb2xlYW5EYXRhO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHRNb2RlbC50eXBlID09PSBPYnNlcnZhYmxlVHlwZUVudW0uZ2FtZVN0YXJ0ZWQpIHtcbiAgICAgICAgdGhpcy5pc0Rpc3BsYXllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdGV4dFxuICAgKlxuICAgKi9cbiAgcHVibGljIGFuaW1hdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRGlzcGxheWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2NvcmVDbGFzcy5hbmltYXRlKCk7XG4gICAgdGhpcy5oaWdoU2NvcmVDbGFzcy5hbmltYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBTY29yZSBudW1iZXJcbiAgICogQHBhcmFtIHBvaW50cyBUaGUgcG9pbnRzIHRvIHNldFxuICAgKi9cbiAgcHVibGljIHNldFNjb3JlKHBvaW50czogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zY29yZUNsYXNzLnNldE51bWJlcihwb2ludHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgaGlnaCBTY29yZVxuICAgKiBAcGFyYW0gcG9pbnRzIFRoZSBwb2ludHMgdG8gc2V0XG4gICAqL1xuICBwdWJsaWMgc2V0SGlnaFNjb3JlKHBvaW50czogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5oaWdoU2NvcmVDbGFzcy5zZXROdW1iZXIocG9pbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5IGFueSB0ZXh0XG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGRpc3BsYXlcbiAgICogQHBhcmFtIGZvbnRDb2xvciAgVGhlIGZvbnQgY29sb3JcbiAgICogQHBhcmFtIGxlZnRPZmZzZXQgIHRoZSBvZmZzZXQgdG8gY2VudGVyXG4gICAqL1xuICBkaXNwbGF5VGV4dCh0ZXh0OiBzdHJpbmcsIGZvbnRDb2xvcjogc3RyaW5nLCBsZWZ0T2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lYm9hcmQgPSB0aGlzLmdhbWVTZXJ2aWNlLmdldEdhbWVib2FyZCgpO1xuICAgIHRoaXMuY3R4LmZpbGxTdHlsZSA9ICdibGFjayc7XG4gICAgY29uc3QgZ2FtZU92ZXJCb3hXaWR0aCA9IDEwMDtcbiAgICBjb25zdCBnYW1lT3ZlckJveEhlaWdodCA9IDUwO1xuICAgIGNvbnN0IGdhbWVPdmVyWENlbnRlciA9IChnYW1lYm9hcmQud2lkdGggLSBnYW1lT3ZlckJveFdpZHRoKSAvIDI7XG4gICAgY29uc3QgZ2FtZU92ZXJZQ2VudGVyID0gKGdhbWVib2FyZC5oZWlnaHQgLSBnYW1lT3ZlckJveEhlaWdodCkgLyAyO1xuICAgIHRoaXMuY3R4LmZpbGxSZWN0KGdhbWVPdmVyWENlbnRlciwgZ2FtZU92ZXJZQ2VudGVyLCBnYW1lT3ZlckJveFdpZHRoLCBnYW1lT3ZlckJveEhlaWdodCk7XG4gICAgdGhpcy5jdHguZm9udCA9ICcxMHB4IFwiUHJlc3MgU3RhcnQgMlBcIiwgY3Vyc2l2ZSc7XG4gICAgdGhpcy5jdHguZmlsbFN0eWxlID0gZm9udENvbG9yO1xuICAgIHRoaXMuY3R4LmZpbGxUZXh0KHRleHQsIGdhbWVPdmVyWENlbnRlciArIGxlZnRPZmZzZXQsIGdhbWVPdmVyWUNlbnRlciArIDMwKTtcbiAgfVxufVxuIl19