bp-prism-game
Version:
The BP Prism Game
101 lines • 9.99 kB
JavaScript
import { ImageLoadedEnum } from '../../enum/image-loaded.enum';
import { AssetClass } from '../../asset/asset.class';
/**
* The Path Class
*/
export class PathClass extends AssetClass {
/**
* Constructor
* @param gameService The GameService
* @param ctx The ctx
*/
constructor(gameService, ctx) {
super(gameService, ctx, 1, ImageLoadedEnum.path);
/**
* the path direction image
*/
// private pathDirectionImage: ImageLocationModel;
/**
* The position counter
*/
this.positionCounter = 0;
this.loadPathImages();
this.positionCounter = 0;
this.allMoves = [];
this.assetScale = {
x: 0.2,
y: 0.2
};
}
/**
* Load the Path Images
*/
loadPathImages() {
const imagesToLoad = [ImageLoadedEnum.path, ImageLoadedEnum.pathDirection];
imagesToLoad.map((key) => {
this.images.push(this.gameService.getImage(key));
this.isImageLoaded = true;
});
this.pathImage = this.images[0];
// this.pathDirectionImage = this.images[1];
}
/**
* Set the path
*
* @param moves All the moves of the path
*/
setPath(moves) {
this.allMoves = moves;
this.move(this.allMoves[0]);
}
/**
* Draw everything necessary
*/
drawPath() {
if (this.isImageLoaded) {
this.allMoves.map((position) => {
this.ctx.save();
this.ctx.translate(position.x, position.y);
this.ctx.scale(this.assetScale.x, this.assetScale.y);
this.ctx.drawImage(this.pathImage.imageSource, 0, 0);
this.ctx.restore();
});
}
}
/**
* Draw the Path Direction
*/
/*
protected drawPathDirection(path: IAsset): void {
this.ctx.save();
this.ctx.translate(path.x, path.y);
this.ctx.scale(this.assetScale.x, this.assetScale.y);
this.ctx.drawImage(this.pathDirectionImage.imageSource, 0, 0);
this.ctx.restore();
}
*/
/**
* Animate the Level
* @param now the current time
*/
animate(now = 0) {
this.assetTimer.elapsed = now - this.assetTimer.start;
this.drawPath();
if (this.assetTimer.elapsed > 10) {
this.assetTimer.start = now;
/*
const offset = 25;
const moves = Math.floor(this.allMoves.length / offset);
for (let move = 0; move < moves; move++) {
this.drawPathDirection(this.allMoves[(this.animationCounter + move * offset) % this.allMoves.length]);
}
*/
if (this.positionCounter++ % 4) {
/*
this.animationCounter++;
*/
}
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaXNtL3NyYy9saWIvbGV2ZWwvcGF0aC9wYXRoLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUcvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sU0FBVSxTQUFRLFVBQVU7SUFvQnZDOzs7O09BSUc7SUFDSCxZQUFZLFdBQXdCLEVBQUUsR0FBNkI7UUFDakUsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQWhCbkQ7O1dBRUc7UUFDSCxrREFBa0Q7UUFFbEQ7O1dBRUc7UUFDSyxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQVUxQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixDQUFDLEVBQUUsR0FBRztZQUNOLENBQUMsRUFBRSxHQUFHO1NBQ1ksQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLE1BQU0sWUFBWSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFM0UsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQW9CLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLDRDQUE0QztJQUM5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxLQUFlO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNPLFFBQVE7UUFDaEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSDs7Ozs7Ozs7TUFRRTtJQUVGOzs7T0FHRztJQUNJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFFdEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUM1Qjs7Ozs7O2NBTUU7WUFFRixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQzlCOztrQkFFRTthQUNIO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHYW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvZ2FtZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFzc2V0U2NhbGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL2Fzc2V0LXNjYWxlLm1vZGUnO1xuaW1wb3J0IHsgSW1hZ2VMb2FkZWRFbnVtIH0gZnJvbSAnLi4vLi4vZW51bS9pbWFnZS1sb2FkZWQuZW51bSc7XG5pbXBvcnQgeyBJQXNzZXQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvYXNzZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEltYWdlTG9jYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL2ltYWdlL2ltYWdlLWxvY2F0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFzc2V0Q2xhc3MgfSBmcm9tICcuLi8uLi9hc3NldC9hc3NldC5jbGFzcyc7XG5cbi8qKlxuICogVGhlIFBhdGggQ2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIFBhdGhDbGFzcyBleHRlbmRzIEFzc2V0Q2xhc3Mge1xuICAvKipcbiAgICogVGhlIGFsaWVuIG1vdmVzIGZvciBkZWJ1Z1xuICAgKi9cbiAgcHJpdmF0ZSBhbGxNb3ZlczogSUFzc2V0W107XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIGltYWdlXG4gICAqL1xuICBwcml2YXRlIHBhdGhJbWFnZTogSW1hZ2VMb2NhdGlvbk1vZGVsO1xuICAvKipcbiAgICogdGhlIHBhdGggZGlyZWN0aW9uIGltYWdlXG4gICAqL1xuICAvLyBwcml2YXRlIHBhdGhEaXJlY3Rpb25JbWFnZTogSW1hZ2VMb2NhdGlvbk1vZGVsO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gY291bnRlclxuICAgKi9cbiAgcHJpdmF0ZSBwb3NpdGlvbkNvdW50ZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0gZ2FtZVNlcnZpY2UgVGhlIEdhbWVTZXJ2aWNlXG4gICAqIEBwYXJhbSBjdHggVGhlIGN0eFxuICAgKi9cbiAgY29uc3RydWN0b3IoZ2FtZVNlcnZpY2U6IEdhbWVTZXJ2aWNlLCBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCkge1xuICAgIHN1cGVyKGdhbWVTZXJ2aWNlLCBjdHgsIDEsIEltYWdlTG9hZGVkRW51bS5wYXRoKTtcblxuICAgIHRoaXMubG9hZFBhdGhJbWFnZXMoKTtcblxuICAgIHRoaXMucG9zaXRpb25Db3VudGVyID0gMDtcblxuICAgIHRoaXMuYWxsTW92ZXMgPSBbXTtcblxuICAgIHRoaXMuYXNzZXRTY2FsZSA9IHtcbiAgICAgIHg6IDAuMixcbiAgICAgIHk6IDAuMlxuICAgIH0gYXMgQXNzZXRTY2FsZU1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIFBhdGggSW1hZ2VzXG4gICAqL1xuICBwcml2YXRlIGxvYWRQYXRoSW1hZ2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGltYWdlc1RvTG9hZCA9IFtJbWFnZUxvYWRlZEVudW0ucGF0aCwgSW1hZ2VMb2FkZWRFbnVtLnBhdGhEaXJlY3Rpb25dO1xuXG4gICAgaW1hZ2VzVG9Mb2FkLm1hcCgoa2V5OiBJbWFnZUxvYWRlZEVudW0pID0+IHtcbiAgICAgIHRoaXMuaW1hZ2VzLnB1c2godGhpcy5nYW1lU2VydmljZS5nZXRJbWFnZShrZXkpKTtcbiAgICAgIHRoaXMuaXNJbWFnZUxvYWRlZCA9IHRydWU7XG4gICAgfSk7XG5cbiAgICB0aGlzLnBhdGhJbWFnZSA9IHRoaXMuaW1hZ2VzWzBdO1xuICAgIC8vIHRoaXMucGF0aERpcmVjdGlvbkltYWdlID0gdGhpcy5pbWFnZXNbMV07XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBwYXRoXG4gICAqXG4gICAqIEBwYXJhbSBtb3ZlcyBBbGwgdGhlIG1vdmVzIG9mIHRoZSBwYXRoXG4gICAqL1xuICBwdWJsaWMgc2V0UGF0aChtb3ZlczogSUFzc2V0W10pOiB2b2lkIHtcbiAgICB0aGlzLmFsbE1vdmVzID0gbW92ZXM7XG4gICAgdGhpcy5tb3ZlKHRoaXMuYWxsTW92ZXNbMF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERyYXcgZXZlcnl0aGluZyBuZWNlc3NhcnlcbiAgICovXG4gIHByb3RlY3RlZCBkcmF3UGF0aCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0ltYWdlTG9hZGVkKSB7XG4gICAgICB0aGlzLmFsbE1vdmVzLm1hcCgocG9zaXRpb246IElBc3NldCkgPT4ge1xuICAgICAgICB0aGlzLmN0eC5zYXZlKCk7XG4gICAgICAgIHRoaXMuY3R4LnRyYW5zbGF0ZShwb3NpdGlvbi54LCBwb3NpdGlvbi55KTtcbiAgICAgICAgdGhpcy5jdHguc2NhbGUodGhpcy5hc3NldFNjYWxlLngsIHRoaXMuYXNzZXRTY2FsZS55KTtcbiAgICAgICAgdGhpcy5jdHguZHJhd0ltYWdlKHRoaXMucGF0aEltYWdlLmltYWdlU291cmNlLCAwLCAwKTtcbiAgICAgICAgdGhpcy5jdHgucmVzdG9yZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERyYXcgdGhlIFBhdGggRGlyZWN0aW9uXG4gICAqL1xuICAvKlxuICBwcm90ZWN0ZWQgZHJhd1BhdGhEaXJlY3Rpb24ocGF0aDogSUFzc2V0KTogdm9pZCB7XG4gICAgdGhpcy5jdHguc2F2ZSgpO1xuICAgIHRoaXMuY3R4LnRyYW5zbGF0ZShwYXRoLngsIHBhdGgueSk7XG4gICAgdGhpcy5jdHguc2NhbGUodGhpcy5hc3NldFNjYWxlLngsIHRoaXMuYXNzZXRTY2FsZS55KTtcbiAgICB0aGlzLmN0eC5kcmF3SW1hZ2UodGhpcy5wYXRoRGlyZWN0aW9uSW1hZ2UuaW1hZ2VTb3VyY2UsIDAsIDApO1xuICAgIHRoaXMuY3R4LnJlc3RvcmUoKTtcbiAgfVxuICAqL1xuXG4gIC8qKlxuICAgKiBBbmltYXRlIHRoZSBMZXZlbFxuICAgKiBAcGFyYW0gbm93IHRoZSBjdXJyZW50IHRpbWVcbiAgICovXG4gIHB1YmxpYyBhbmltYXRlKG5vdyA9IDApOiB2b2lkIHtcbiAgICB0aGlzLmFzc2V0VGltZXIuZWxhcHNlZCA9IG5vdyAtIHRoaXMuYXNzZXRUaW1lci5zdGFydDtcblxuICAgIHRoaXMuZHJhd1BhdGgoKTtcblxuICAgIGlmICh0aGlzLmFzc2V0VGltZXIuZWxhcHNlZCA+IDEwKSB7XG4gICAgICB0aGlzLmFzc2V0VGltZXIuc3RhcnQgPSBub3c7XG4gICAgICAvKlxuICAgICAgY29uc3Qgb2Zmc2V0ID0gMjU7XG4gICAgICBjb25zdCBtb3ZlcyA9IE1hdGguZmxvb3IodGhpcy5hbGxNb3Zlcy5sZW5ndGggLyBvZmZzZXQpO1xuICAgICAgZm9yIChsZXQgbW92ZSA9IDA7IG1vdmUgPCBtb3ZlczsgbW92ZSsrKSB7XG4gICAgICAgIHRoaXMuZHJhd1BhdGhEaXJlY3Rpb24odGhpcy5hbGxNb3Zlc1sodGhpcy5hbmltYXRpb25Db3VudGVyICsgbW92ZSAqIG9mZnNldCkgJSB0aGlzLmFsbE1vdmVzLmxlbmd0aF0pO1xuICAgICAgfVxuICAgICAgKi9cblxuICAgICAgaWYgKHRoaXMucG9zaXRpb25Db3VudGVyKysgJSA0KSB7XG4gICAgICAgIC8qXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uQ291bnRlcisrO1xuICAgICAgICAqL1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19