bp-prism-game
Version:
The BP Prism Game
78 lines • 9.41 kB
JavaScript
import { SceneryClass } from '../scenery.class';
import { ImageLoadedEnum } from '../../enum/image-loaded.enum';
import { GameAssetEnum } from '../../enum/game-assets.enum';
/**
* The Lava Class
*/
export class LavaClass extends SceneryClass {
/**
* Constructor
* @param gameService The GameService
* @param ctx The ctx
* @param guid The guid of the alien
*/
constructor(gameService, ctx, guid) {
super(gameService, ctx, guid, ImageLoadedEnum.lava);
this.type = GameAssetEnum.lava;
this.animationXPosition = 0;
this.animationYPosition = 0;
this.loadLavaImages();
this.assetScale = {
x: 0.2,
y: 0.2
};
}
/**
* Load the Lava Images
*/
loadLavaImages() {
const imagesToLoad = [ImageLoadedEnum.lava];
imagesToLoad.map((key) => {
this.images.push(this.gameService.getImage(key));
this.isImageLoaded = true;
});
}
/**
* Draw everything necessary
*/
draw() {
if (this.isImageLoaded) {
this.images.map((imageData) => {
this.ctx.save();
this.ctx.translate(this.x, this.y);
this.ctx.scale(this.assetScale.x, this.assetScale.y);
this.ctx.drawImage(imageData.imageSource, // The image
this.animationXPosition, // sy Start y clipping
this.animationYPosition, // sy Start y clipping
imageData.width / 2, // swidth width of clipped image
imageData.height / 2, // swidth width of clipped image
0, // x The x coordinates
0, // x The x coordinates
imageData.width / 2, // width The width of the image
imageData.height / 2 // height the height of the image
);
this.ctx.restore();
});
}
}
/**
* Animate the lava
* @param now the current time
*/
animate(now = 0) {
this.assetTimer.elapsed = now - this.assetTimer.start;
if (this.assetTimer.elapsed > 500) {
this.assetTimer.start = now;
this.animationXPosition++;
if (this.animationXPosition % 2) {
this.animationYPosition++;
}
if (this.animationXPosition >= 25) {
this.animationXPosition = 0;
this.animationYPosition = 0;
}
}
this.draw();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF2YS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaXNtL3NyYy9saWIvc2NlbmVyeS9sYXZhL2xhdmEuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sU0FBVSxTQUFRLFlBQVk7SUFVekM7Ozs7O09BS0c7SUFDSCxZQUFZLFdBQXdCLEVBQUUsR0FBNkIsRUFBRSxJQUFZO1FBQy9FLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBRS9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdEIsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixDQUFDLEVBQUUsR0FBRztZQUNOLENBQUMsRUFBRSxHQUFHO1NBQ1ksQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLE1BQU0sWUFBWSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFvQixFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLElBQUk7UUFDWixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUE2QixFQUFFLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FDaEIsU0FBUyxDQUFDLFdBQVcsRUFBRSxZQUFZO2dCQUNuQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsc0JBQXNCO2dCQUMvQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsc0JBQXNCO2dCQUMvQyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxnQ0FBZ0M7Z0JBQ3JELFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLGdDQUFnQztnQkFDdEQsQ0FBQyxFQUFFLHNCQUFzQjtnQkFDekIsQ0FBQyxFQUFFLHNCQUFzQjtnQkFDekIsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsK0JBQStCO2dCQUNwRCxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxpQ0FBaUM7aUJBQ3ZELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFFdEQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBRTFCLElBQUksSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDM0I7WUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7YUFDN0I7U0FDRjtRQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9nYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NlbmVyeUNsYXNzIH0gZnJvbSAnLi4vc2NlbmVyeS5jbGFzcyc7XG5pbXBvcnQgeyBBc3NldFNjYWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbC9hc3NldC1zY2FsZS5tb2RlJztcbmltcG9ydCB7IEltYWdlTG9hZGVkRW51bSB9IGZyb20gJy4uLy4uL2VudW0vaW1hZ2UtbG9hZGVkLmVudW0nO1xuaW1wb3J0IHsgSW1hZ2VMb2NhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvaW1hZ2UvaW1hZ2UtbG9jYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgR2FtZUFzc2V0RW51bSB9IGZyb20gJy4uLy4uL2VudW0vZ2FtZS1hc3NldHMuZW51bSc7XG5cbi8qKlxuICogVGhlIExhdmEgQ2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIExhdmFDbGFzcyBleHRlbmRzIFNjZW5lcnlDbGFzcyB7XG4gIC8qKlxuICAgKiBUaGUgYW5pbWF0aW9uIHBvc2l0aW9uXG4gICAqL1xuICBwcml2YXRlIGFuaW1hdGlvblhQb3NpdGlvbjogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGFuaW1hdGlvbiBwb3NpdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBhbmltYXRpb25ZUG9zaXRpb246IG51bWJlcjtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3JcbiAgICogQHBhcmFtIGdhbWVTZXJ2aWNlIFRoZSBHYW1lU2VydmljZVxuICAgKiBAcGFyYW0gY3R4IFRoZSBjdHhcbiAgICogQHBhcmFtIGd1aWQgVGhlIGd1aWQgb2YgdGhlIGFsaWVuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihnYW1lU2VydmljZTogR2FtZVNlcnZpY2UsIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBndWlkOiBudW1iZXIpIHtcbiAgICBzdXBlcihnYW1lU2VydmljZSwgY3R4LCBndWlkLCBJbWFnZUxvYWRlZEVudW0ubGF2YSk7XG5cbiAgICB0aGlzLnR5cGUgPSBHYW1lQXNzZXRFbnVtLmxhdmE7XG5cbiAgICB0aGlzLmFuaW1hdGlvblhQb3NpdGlvbiA9IDA7XG4gICAgdGhpcy5hbmltYXRpb25ZUG9zaXRpb24gPSAwO1xuXG4gICAgdGhpcy5sb2FkTGF2YUltYWdlcygpO1xuXG4gICAgdGhpcy5hc3NldFNjYWxlID0ge1xuICAgICAgeDogMC4yLFxuICAgICAgeTogMC4yXG4gICAgfSBhcyBBc3NldFNjYWxlTW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgTGF2YSBJbWFnZXNcbiAgICovXG4gIHByaXZhdGUgbG9hZExhdmFJbWFnZXMoKTogdm9pZCB7XG4gICAgY29uc3QgaW1hZ2VzVG9Mb2FkID0gW0ltYWdlTG9hZGVkRW51bS5sYXZhXTtcblxuICAgIGltYWdlc1RvTG9hZC5tYXAoKGtleTogSW1hZ2VMb2FkZWRFbnVtKSA9PiB7XG4gICAgICB0aGlzLmltYWdlcy5wdXNoKHRoaXMuZ2FtZVNlcnZpY2UuZ2V0SW1hZ2Uoa2V5KSk7XG4gICAgICB0aGlzLmlzSW1hZ2VMb2FkZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERyYXcgZXZlcnl0aGluZyBuZWNlc3NhcnlcbiAgICovXG4gIHByb3RlY3RlZCBkcmF3KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzSW1hZ2VMb2FkZWQpIHtcbiAgICAgIHRoaXMuaW1hZ2VzLm1hcCgoaW1hZ2VEYXRhOiBJbWFnZUxvY2F0aW9uTW9kZWwpID0+IHtcbiAgICAgICAgdGhpcy5jdHguc2F2ZSgpO1xuICAgICAgICB0aGlzLmN0eC50cmFuc2xhdGUodGhpcy54LCB0aGlzLnkpO1xuICAgICAgICB0aGlzLmN0eC5zY2FsZSh0aGlzLmFzc2V0U2NhbGUueCwgdGhpcy5hc3NldFNjYWxlLnkpO1xuICAgICAgICB0aGlzLmN0eC5kcmF3SW1hZ2UoXG4gICAgICAgICAgaW1hZ2VEYXRhLmltYWdlU291cmNlLCAvLyBUaGUgaW1hZ2VcbiAgICAgICAgICB0aGlzLmFuaW1hdGlvblhQb3NpdGlvbiwgLy8gc3kgU3RhcnQgeSBjbGlwcGluZ1xuICAgICAgICAgIHRoaXMuYW5pbWF0aW9uWVBvc2l0aW9uLCAvLyBzeSBTdGFydCB5IGNsaXBwaW5nXG4gICAgICAgICAgaW1hZ2VEYXRhLndpZHRoIC8gMiwgLy8gc3dpZHRoIHdpZHRoIG9mIGNsaXBwZWQgaW1hZ2VcbiAgICAgICAgICBpbWFnZURhdGEuaGVpZ2h0IC8gMiwgLy8gc3dpZHRoIHdpZHRoIG9mIGNsaXBwZWQgaW1hZ2VcbiAgICAgICAgICAwLCAvLyB4IFRoZSB4IGNvb3JkaW5hdGVzXG4gICAgICAgICAgMCwgLy8geCBUaGUgeCBjb29yZGluYXRlc1xuICAgICAgICAgIGltYWdlRGF0YS53aWR0aCAvIDIsIC8vIHdpZHRoIFRoZSB3aWR0aCBvZiB0aGUgaW1hZ2VcbiAgICAgICAgICBpbWFnZURhdGEuaGVpZ2h0IC8gMiAvLyBoZWlnaHQgdGhlIGhlaWdodCBvZiB0aGUgaW1hZ2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jdHgucmVzdG9yZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFuaW1hdGUgdGhlIGxhdmFcbiAgICogQHBhcmFtIG5vdyB0aGUgY3VycmVudCB0aW1lXG4gICAqL1xuICBwdWJsaWMgYW5pbWF0ZShub3cgPSAwKTogdm9pZCB7XG4gICAgdGhpcy5hc3NldFRpbWVyLmVsYXBzZWQgPSBub3cgLSB0aGlzLmFzc2V0VGltZXIuc3RhcnQ7XG5cbiAgICBpZiAodGhpcy5hc3NldFRpbWVyLmVsYXBzZWQgPiA1MDApIHtcbiAgICAgIHRoaXMuYXNzZXRUaW1lci5zdGFydCA9IG5vdztcbiAgICAgIHRoaXMuYW5pbWF0aW9uWFBvc2l0aW9uKys7XG5cbiAgICAgIGlmICh0aGlzLmFuaW1hdGlvblhQb3NpdGlvbiAlIDIpIHtcbiAgICAgICAgdGhpcy5hbmltYXRpb25ZUG9zaXRpb24rKztcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uWFBvc2l0aW9uID49IDI1KSB7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uWFBvc2l0aW9uID0gMDtcbiAgICAgICAgdGhpcy5hbmltYXRpb25ZUG9zaXRpb24gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZHJhdygpO1xuICB9XG59XG4iXX0=