UNPKG

bp-prism-game

Version:
77 lines 10.2 kB
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=