UNPKG

bp-prism-game

Version:
101 lines 9.99 kB
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