bp-prism-game
Version:
The BP Prism Game
77 lines • 10.2 kB
JavaScript
import { SceneryClass } from '../scenery.class';
import { ImageLoadedEnum } from '../../enum/image-loaded.enum';
import { GameAssetEnum } from '../../enum/game-assets.enum';
/**
* The Slime Class
*/
export class SlimeClass 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.slime);
this.type = GameAssetEnum.slime;
this.slimeMax = Math.random() + 0.25;
this.slimeScale = 0;
this.loadSlimeImages();
this.assetScale = {
x: 0.2,
y: 0.2
};
}
/**
* Load the Slime Images
*/
loadSlimeImages() {
const imagesToLoad = [ImageLoadedEnum.slime, ImageLoadedEnum.slime2, ImageLoadedEnum.slimeGround];
imagesToLoad.map((key) => {
this.images.push(this.gameService.getImage(key));
this.isImageLoaded = true;
});
this.slimeImage = this.images[Math.random() < 0.5 ? 0 : 1];
this.slimeGroundImage = this.images[2];
}
/**
* Draw the slime ground
*/
drawSlimeGround() {
this.ctx.save();
this.ctx.translate(this.x, this.y);
this.ctx.scale(this.assetScale.x, this.assetScale.y);
this.ctx.drawImage(this.slimeGroundImage.imageSource, this.slimeGroundImage.x, this.slimeGroundImage.y);
this.ctx.restore();
}
/**
* Draw the alien tractor beam
*/
drawSlime() {
this.ctx.save();
this.ctx.translate(this.x, this.y);
this.ctx.scale(this.assetScale.x, this.assetScale.y);
this.ctx.rotate(this.gameService.getRadians(this.slimeImage.rotate));
this.ctx.drawImage(this.slimeImage.imageSource, this.slimeImage.x, this.slimeImage.y, this.slimeImage.width, this.slimeImage.height * this.slimeScale);
this.ctx.restore();
if (this.slimeScale < this.slimeMax) {
this.slimeScale += 0.005;
}
else {
this.slimeScale = 0;
}
}
/**
* Animate the alien
* @param now the current time
*/
animate(now = 0) {
this.assetTimer.elapsed = now - this.assetTimer.start;
this.drawSlimeGround();
if (this.assetTimer.elapsed > 10) {
this.assetTimer.start = now;
this.drawSlime();
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmlzbS9zcmMvbGliL3NjZW5lcnkvc2xpbWUvc2xpbWUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVyxTQUFRLFlBQVk7SUFpQjFDOzs7OztPQUtHO0lBQ0gsWUFBWSxXQUF3QixFQUFFLEdBQTZCLEVBQUUsSUFBWTtRQUMvRSxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUVoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFFcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDaEIsQ0FBQyxFQUFFLEdBQUc7WUFDTixDQUFDLEVBQUUsR0FBRztTQUNZLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZTtRQUNyQixNQUFNLFlBQVksR0FBRyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQW9CLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFD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Q0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHYW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvZ2FtZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNjZW5lcnlDbGFzcyB9IGZyb20gJy4uL3NjZW5lcnkuY2xhc3MnO1xuaW1wb3J0IHsgQXNzZXRTY2FsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvYXNzZXQtc2NhbGUubW9kZSc7XG5pbXBvcnQgeyBJbWFnZUxvYWRlZEVudW0gfSBmcm9tICcuLi8uLi9lbnVtL2ltYWdlLWxvYWRlZC5lbnVtJztcbmltcG9ydCB7IEltYWdlTG9jYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL2ltYWdlL2ltYWdlLWxvY2F0aW9uLm1vZGVsJztcbmltcG9ydCB7IEdhbWVBc3NldEVudW0gfSBmcm9tICcuLi8uLi9lbnVtL2dhbWUtYXNzZXRzLmVudW0nO1xuXG4vKipcbiAqIFRoZSBTbGltZSBDbGFzc1xuICovXG5leHBvcnQgY2xhc3MgU2xpbWVDbGFzcyBleHRlbmRzIFNjZW5lcnlDbGFzcyB7XG4gIC8qKlxuICAgKiBUaGUgc2xpbWUgSW1hZ2VcbiAgICovXG4gIHByaXZhdGUgc2xpbWVJbWFnZTogSW1hZ2VMb2NhdGlvbk1vZGVsO1xuICAvKipcbiAgICogVGhlIHNsaW1lIEdyb3VuZCBJbWFnZVxuICAgKi9cbiAgcHJpdmF0ZSBzbGltZUdyb3VuZEltYWdlOiBJbWFnZUxvY2F0aW9uTW9kZWw7XG4gIC8qKlxuICAgKiBTbGltZSBTY2FsZVxuICAgKi9cbiAgcHJpdmF0ZSBzbGltZVNjYWxlOiBudW1iZXI7XG4gIC8qKlxuICAgKiBTbGltZSBNYXhcbiAgICovXG4gIHByaXZhdGUgc2xpbWVNYXg6IG51bWJlcjtcbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBnYW1lU2VydmljZSBUaGUgR2FtZVNlcnZpY2VcbiAgICogQHBhcmFtIGN0eCBUaGUgY3R4XG4gICAqIEBwYXJhbSBndWlkIFRoZSBndWlkIG9mIHRoZSBhbGllblxuICAgKi9cbiAgY29uc3RydWN0b3IoZ2FtZVNlcnZpY2U6IEdhbWVTZXJ2aWNlLCBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgZ3VpZDogbnVtYmVyKSB7XG4gICAgc3VwZXIoZ2FtZVNlcnZpY2UsIGN0eCwgZ3VpZCwgSW1hZ2VMb2FkZWRFbnVtLnNsaW1lKTtcblxuICAgIHRoaXMudHlwZSA9IEdhbWVBc3NldEVudW0uc2xpbWU7XG5cbiAgICB0aGlzLnNsaW1lTWF4ID0gTWF0aC5yYW5kb20oKSArIDAuMjU7XG5cbiAgICB0aGlzLnNsaW1lU2NhbGUgPSAwO1xuXG4gICAgdGhpcy5sb2FkU2xpbWVJbWFnZXMoKTtcblxuICAgIHRoaXMuYXNzZXRTY2FsZSA9IHtcbiAgICAgIHg6IDAuMixcbiAgICAgIHk6IDAuMlxuICAgIH0gYXMgQXNzZXRTY2FsZU1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIFNsaW1lIEltYWdlc1xuICAgKi9cbiAgcHJpdmF0ZSBsb2FkU2xpbWVJbWFnZXMoKTogdm9pZCB7XG4gICAgY29uc3QgaW1hZ2VzVG9Mb2FkID0gW0ltYWdlTG9hZGVkRW51bS5zbGltZSwgSW1hZ2VMb2FkZWRFbnVtLnNsaW1lMiwgSW1hZ2VMb2FkZWRFbnVtLnNsaW1lR3JvdW5kXTtcblxuICAgIGltYWdlc1RvTG9hZC5tYXAoKGtleTogSW1hZ2VMb2FkZWRFbnVtKSA9PiB7XG4gICAgICB0aGlzLmltYWdlcy5wdXNoKHRoaXMuZ2FtZVNlcnZpY2UuZ2V0SW1hZ2Uoa2V5KSk7XG4gICAgICB0aGlzLmlzSW1hZ2VMb2FkZWQgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zbGltZUltYWdlID0gdGhpcy5pbWFnZXNbTWF0aC5yYW5kb20oKSA8IDAuNSA/IDAgOiAxXTtcbiAgICB0aGlzLnNsaW1lR3JvdW5kSW1hZ2UgPSB0aGlzLmltYWdlc1syXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEcmF3IHRoZSBzbGltZSBncm91bmRcbiAgICovXG4gIHByaXZhdGUgZHJhd1NsaW1lR3JvdW5kKCk6IHZvaWQge1xuICAgIHRoaXMuY3R4LnNhdmUoKTtcbiAgICB0aGlzLmN0eC50cmFuc2xhdGUodGhpcy54LCB0aGlzLnkpO1xuICAgIHRoaXMuY3R4LnNjYWxlKHRoaXMuYXNzZXRTY2FsZS54LCB0aGlzLmFzc2V0U2NhbGUueSk7XG4gICAgdGhpcy5jdHguZHJhd0ltYWdlKHRoaXMuc2xpbWVHcm91bmRJbWFnZS5pbWFnZVNvdXJjZSwgdGhpcy5zbGltZUdyb3VuZEltYWdlLngsIHRoaXMuc2xpbWVHcm91bmRJbWFnZS55KTtcbiAgICB0aGlzLmN0eC5yZXN0b3JlKCk7XG4gIH1cblxuICAvKipcbiAgICogRHJhdyB0aGUgYWxpZW4gdHJhY3RvciBiZWFtXG4gICAqL1xuICBwcml2YXRlIGRyYXdTbGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLmN0eC5zYXZlKCk7XG4gICAgdGhpcy5jdHgudHJhbnNsYXRlKHRoaXMueCwgdGhpcy55KTtcbiAgICB0aGlzLmN0eC5zY2FsZSh0aGlzLmFzc2V0U2NhbGUueCwgdGhpcy5hc3NldFNjYWxlLnkpO1xuICAgIHRoaXMuY3R4LnJvdGF0ZSh0aGlzLmdhbWVTZXJ2aWNlLmdldFJhZGlhbnModGhpcy5zbGltZUltYWdlLnJvdGF0ZSkpO1xuICAgIHRoaXMuY3R4LmRyYXdJbWFnZShcbiAgICAgIHRoaXMuc2xpbWVJbWFnZS5pbWFnZVNvdXJjZSxcbiAgICAgIHRoaXMuc2xpbWVJbWFnZS54LFxuICAgICAgdGhpcy5zbGltZUltYWdlLnksXG4gICAgICB0aGlzLnNsaW1lSW1hZ2Uud2lkdGgsXG4gICAgICB0aGlzLnNsaW1lSW1hZ2UuaGVpZ2h0ICogdGhpcy5zbGltZVNjYWxlXG4gICAgKTtcbiAgICB0aGlzLmN0eC5yZXN0b3JlKCk7XG4gICAgaWYgKHRoaXMuc2xpbWVTY2FsZSA8IHRoaXMuc2xpbWVNYXgpIHtcbiAgICAgIHRoaXMuc2xpbWVTY2FsZSArPSAwLjAwNTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zbGltZVNjYWxlID0gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQW5pbWF0ZSB0aGUgYWxpZW5cbiAgICogQHBhcmFtIG5vdyB0aGUgY3VycmVudCB0aW1lXG4gICAqL1xuICBwdWJsaWMgYW5pbWF0ZShub3cgPSAwKTogdm9pZCB7XG4gICAgdGhpcy5hc3NldFRpbWVyLmVsYXBzZWQgPSBub3cgLSB0aGlzLmFzc2V0VGltZXIuc3RhcnQ7XG5cbiAgICB0aGlzLmRyYXdTbGltZUdyb3VuZCgpO1xuXG4gICAgaWYgKHRoaXMuYXNzZXRUaW1lci5lbGFwc2VkID4gMTApIHtcbiAgICAgIHRoaXMuYXNzZXRUaW1lci5zdGFydCA9IG5vdztcbiAgICAgIHRoaXMuZHJhd1NsaW1lKCk7XG4gICAgfVxuICB9XG59XG4iXX0=