bp-prism-game
Version:
The BP Prism Game
80 lines • 10.2 kB
JavaScript
import { NumberClass } from '../text/number/number.class';
import { TextTypeEnum } from '../enum/text-type.enum';
import { LetterClass } from '../text/letter/letter.class';
import { BLOCK_SIZE } from '../gameboard/gameboard-constants';
/**
* The text service
*/
export class TextService {
/**
* The constructor
*/
constructor(gameService, ctx) {
this.gameService = gameService;
this.ctx = ctx;
this.scoreClass = new NumberClass(this.gameService, this.ctx);
this.highScoreClass = new NumberClass(this.gameService, this.ctx);
this.levelScoreClass = new NumberClass(this.gameService, this.ctx);
this.levelScoreClass.assetScale = { x: 0.1, y: 0.1 };
this.levelClass = new LetterClass(this.gameService, this.ctx);
const textLocations = this.gameService.getTextPositions();
const scoreLocation = textLocations
.filter((textLocation) => textLocation.type === TextTypeEnum.score)
.pop();
this.scoreClass.move({
x: scoreLocation.position.x,
y: scoreLocation.position.y
});
const highScoreLocation = textLocations
.filter((textLocation) => textLocation.type === TextTypeEnum.highScore)
.pop();
this.highScoreClass.move({
x: highScoreLocation.position.x,
y: highScoreLocation.position.y
});
const levelLocation = textLocations
.filter((textLocation) => textLocation.type === TextTypeEnum.level)
.pop();
this.levelClass.move({
x: levelLocation.position.x,
y: levelLocation.position.y
});
this.levelScoreClass.move({
x: levelLocation.position.x + BLOCK_SIZE,
y: levelLocation.position.y
});
this.levelScoreClass.setNumber(1, false);
this.levelClass.setLetter('L');
}
/**
* Initialize the text
*/
animate() {
this.scoreClass.animate();
this.highScoreClass.animate();
this.levelClass.animate();
this.levelScoreClass.animate();
}
/**
* Set the Score number
* @param points The points to set
*/
setScore(points) {
this.scoreClass.setNumber(points);
}
/**
* Set the high Score
* @param points The points to set
*/
setHighScore(points) {
this.highScoreClass.setNumber(points);
}
/**
* Set the level
* @param level The level to set
*/
setLevel(level) {
this.levelScoreClass.setNumber(level, false);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpc20vc3JjL2xpYi9zZXJ2aWNlL3RleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHOUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQXFCdEI7O09BRUc7SUFDSCxZQUFvQixXQUF3QixFQUFVLEdBQTZCO1FBQS9ELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBMEI7UUFDakYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU5RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQXFCLENBQUM7UUFFeEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU5RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUQsTUFBTSxhQUFhLEdBQUcsYUFBYTthQUNoQyxNQUFNLENBQUMsQ0FBQyxZQUErQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUM7YUFDckYsR0FBRyxFQUFFLENBQUM7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixDQUFDLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNCLENBQUMsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEIsQ0FBQyxDQUFDO1FBRWIsTUFBTSxpQkFBaUIsR0FBRyxhQUFhO2FBQ3BDLE1BQU0sQ0FBQyxDQUFDLFlBQStCLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFNBQVMsQ0FBQzthQUN6RixHQUFHLEVBQUUsQ0FBQztRQUVULElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixDQUFDLEVBQUUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEIsQ0FBQyxDQUFDO1FBRWIsTUFBTSxhQUFhLEdBQUcsYUFBYTthQUNoQyxNQUFNLENBQUMsQ0FBQyxZQUErQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUM7YUFDckYsR0FBRyxFQUFFLENBQUM7UUFFVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixDQUFDLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNCLENBQUMsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEIsQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDeEIsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFVBQVU7WUFDeEMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsQixDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFFBQVEsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZLENBQUMsTUFBYztRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdhbWVTZXJ2aWNlIH0gZnJvbSAnLi9nYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgTnVtYmVyQ2xhc3MgfSBmcm9tICcuLi90ZXh0L251bWJlci9udW1iZXIuY2xhc3MnO1xuaW1wb3J0IHsgSUFzc2V0IH0gZnJvbSAnLi4vaW50ZXJmYWNlL2Fzc2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBUZXh0TG9jYXRpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3RleHQtbG9jYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgVGV4dFR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bS90ZXh0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBMZXR0ZXJDbGFzcyB9IGZyb20gJy4uL3RleHQvbGV0dGVyL2xldHRlci5jbGFzcyc7XG5pbXBvcnQgeyBCTE9DS19TSVpFIH0gZnJvbSAnLi4vZ2FtZWJvYXJkL2dhbWVib2FyZC1jb25zdGFudHMnO1xuaW1wb3J0IHsgQXNzZXRTY2FsZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvYXNzZXQtc2NhbGUubW9kZSc7XG5cbi8qKlxuICogVGhlIHRleHQgc2VydmljZVxuICovXG5leHBvcnQgY2xhc3MgVGV4dFNlcnZpY2Uge1xuICAvKipcbiAgICogVGhlIHNjb3JlXG4gICAqL1xuICBwcml2YXRlIHNjb3JlQ2xhc3M6IE51bWJlckNsYXNzO1xuXG4gIC8qKlxuICAgKiBUaGUgaGlnaCBzY29yZVxuICAgKi9cbiAgcHJpdmF0ZSBoaWdoU2NvcmVDbGFzczogTnVtYmVyQ2xhc3M7XG5cbiAgLyoqXG4gICAqIFRoZSBsZXZlbFxuICAgKi9cbiAgcHJpdmF0ZSBsZXZlbENsYXNzOiBMZXR0ZXJDbGFzcztcblxuICAvKipcbiAgICogVGhlIGxldmVsIHNjb3JlXG4gICAqL1xuICBwcml2YXRlIGxldmVsU2NvcmVDbGFzczogTnVtYmVyQ2xhc3M7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnYW1lU2VydmljZTogR2FtZVNlcnZpY2UsIHByaXZhdGUgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIHtcbiAgICB0aGlzLnNjb3JlQ2xhc3MgPSBuZXcgTnVtYmVyQ2xhc3ModGhpcy5nYW1lU2VydmljZSwgdGhpcy5jdHgpO1xuXG4gICAgdGhpcy5oaWdoU2NvcmVDbGFzcyA9IG5ldyBOdW1iZXJDbGFzcyh0aGlzLmdhbWVTZXJ2aWNlLCB0aGlzLmN0eCk7XG5cbiAgICB0aGlzLmxldmVsU2NvcmVDbGFzcyA9IG5ldyBOdW1iZXJDbGFzcyh0aGlzLmdhbWVTZXJ2aWNlLCB0aGlzLmN0eCk7XG4gICAgdGhpcy5sZXZlbFNjb3JlQ2xhc3MuYXNzZXRTY2FsZSA9IHsgeDogMC4xLCB5OiAwLjEgfSBhcyBBc3NldFNjYWxlTW9kZWw7XG5cbiAgICB0aGlzLmxldmVsQ2xhc3MgPSBuZXcgTGV0dGVyQ2xhc3ModGhpcy5nYW1lU2VydmljZSwgdGhpcy5jdHgpO1xuXG4gICAgY29uc3QgdGV4dExvY2F0aW9ucyA9IHRoaXMuZ2FtZVNlcnZpY2UuZ2V0VGV4dFBvc2l0aW9ucygpO1xuICAgIGNvbnN0IHNjb3JlTG9jYXRpb24gPSB0ZXh0TG9jYXRpb25zXG4gICAgICAuZmlsdGVyKCh0ZXh0TG9jYXRpb246IFRleHRMb2NhdGlvbk1vZGVsKSA9PiB0ZXh0TG9jYXRpb24udHlwZSA9PT0gVGV4dFR5cGVFbnVtLnNjb3JlKVxuICAgICAgLnBvcCgpO1xuICAgIHRoaXMuc2NvcmVDbGFzcy5tb3ZlKHtcbiAgICAgIHg6IHNjb3JlTG9jYXRpb24ucG9zaXRpb24ueCxcbiAgICAgIHk6IHNjb3JlTG9jYXRpb24ucG9zaXRpb24ueVxuICAgIH0gYXMgSUFzc2V0KTtcblxuICAgIGNvbnN0IGhpZ2hTY29yZUxvY2F0aW9uID0gdGV4dExvY2F0aW9uc1xuICAgICAgLmZpbHRlcigodGV4dExvY2F0aW9uOiBUZXh0TG9jYXRpb25Nb2RlbCkgPT4gdGV4dExvY2F0aW9uLnR5cGUgPT09IFRleHRUeXBlRW51bS5oaWdoU2NvcmUpXG4gICAgICAucG9wKCk7XG5cbiAgICB0aGlzLmhpZ2hTY29yZUNsYXNzLm1vdmUoe1xuICAgICAgeDogaGlnaFNjb3JlTG9jYXRpb24ucG9zaXRpb24ueCxcbiAgICAgIHk6IGhpZ2hTY29yZUxvY2F0aW9uLnBvc2l0aW9uLnlcbiAgICB9IGFzIElBc3NldCk7XG5cbiAgICBjb25zdCBsZXZlbExvY2F0aW9uID0gdGV4dExvY2F0aW9uc1xuICAgICAgLmZpbHRlcigodGV4dExvY2F0aW9uOiBUZXh0TG9jYXRpb25Nb2RlbCkgPT4gdGV4dExvY2F0aW9uLnR5cGUgPT09IFRleHRUeXBlRW51bS5sZXZlbClcbiAgICAgIC5wb3AoKTtcblxuICAgIHRoaXMubGV2ZWxDbGFzcy5tb3ZlKHtcbiAgICAgIHg6IGxldmVsTG9jYXRpb24ucG9zaXRpb24ueCxcbiAgICAgIHk6IGxldmVsTG9jYXRpb24ucG9zaXRpb24ueVxuICAgIH0gYXMgSUFzc2V0KTtcblxuICAgIHRoaXMubGV2ZWxTY29yZUNsYXNzLm1vdmUoe1xuICAgICAgeDogbGV2ZWxMb2NhdGlvbi5wb3NpdGlvbi54ICsgQkxPQ0tfU0laRSxcbiAgICAgIHk6IGxldmVsTG9jYXRpb24ucG9zaXRpb24ueVxuICAgIH0gYXMgSUFzc2V0KTtcblxuICAgIHRoaXMubGV2ZWxTY29yZUNsYXNzLnNldE51bWJlcigxLCBmYWxzZSk7XG5cbiAgICB0aGlzLmxldmVsQ2xhc3Muc2V0TGV0dGVyKCdMJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdGV4dFxuICAgKi9cbiAgcHVibGljIGFuaW1hdGUoKTogdm9pZCB7XG4gICAgdGhpcy5zY29yZUNsYXNzLmFuaW1hdGUoKTtcbiAgICB0aGlzLmhpZ2hTY29yZUNsYXNzLmFuaW1hdGUoKTtcbiAgICB0aGlzLmxldmVsQ2xhc3MuYW5pbWF0ZSgpO1xuICAgIHRoaXMubGV2ZWxTY29yZUNsYXNzLmFuaW1hdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIFNjb3JlIG51bWJlclxuICAgKiBAcGFyYW0gcG9pbnRzIFRoZSBwb2ludHMgdG8gc2V0XG4gICAqL1xuICBwdWJsaWMgc2V0U2NvcmUocG9pbnRzOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNjb3JlQ2xhc3Muc2V0TnVtYmVyKHBvaW50cyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBoaWdoIFNjb3JlXG4gICAqIEBwYXJhbSBwb2ludHMgVGhlIHBvaW50cyB0byBzZXRcbiAgICovXG4gIHB1YmxpYyBzZXRIaWdoU2NvcmUocG9pbnRzOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmhpZ2hTY29yZUNsYXNzLnNldE51bWJlcihwb2ludHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbGV2ZWxcbiAgICogQHBhcmFtIGxldmVsIFRoZSBsZXZlbCB0byBzZXRcbiAgICovXG4gIHB1YmxpYyBzZXRMZXZlbChsZXZlbDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5sZXZlbFNjb3JlQ2xhc3Muc2V0TnVtYmVyKGxldmVsLCBmYWxzZSk7XG4gIH1cbn1cbiJdfQ==