bp-space-invaders
Version:
The BP Space Invaders Game
53 lines • 8.63 kB
JavaScript
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