UNPKG

bp-prism-game

Version:
92 lines 11.2 kB
import { BridgeClass } from '../level/bridge/bridge.class'; import { AssetTypeEnum } from '../enum/asset-type.enum'; import { LevelOneClass } from '../level/level-one/level-one.class'; import { PathClass } from '../level/path/path.class'; import { PathService } from './path.service'; /** * The gameboard service */ export class GameboardService { /** * The constructor */ constructor(gameService, ctx) { this.gameService = gameService; this.ctx = ctx; this.level = []; const gameboardPositions = this.gameService.getLevelPositions(); this.levelOne = new LevelOneClass(this.gameService, this.ctx, 1); this.pathService = new PathService(); this.path = new PathClass(this.gameService, this.ctx); this.buildPaths(); this.addBridge(gameboardPositions.filter((position) => position.type === AssetTypeEnum.bridge)); } /** * Build Paths */ buildPaths() { /* eslint-disable-next-line */ this.gameService.getAlienBasePositions().map(() => { }); } /** * Set the paths */ setPath() { const allPaths = []; /* eslint-disable-next-line */ const paths = {}; this.gameService.getAlienBasePositions().map((basePosition) => { this.pathService .findShortestPath(this.gameService.convertIAssetToGameboardIAsset(basePosition), this.gameService.getGameBoard()) .map((position) => { if (!Object.prototype.hasOwnProperty.call(paths, position.x)) { paths[position.x] = {}; } /* eslint-disable-next-line */ paths[position.x][position.y] = true; }); }); Object.keys(paths).map((xKey) => { /* eslint-disable-next-line */ Object.keys(paths[xKey]).map((yKey) => { allPaths.push({ x: Number(xKey), y: Number(yKey) }); }); }); this.path.setPath(allPaths); } /** * Animate the path * */ initPath() { this.setPath(); } /** * Add the bridge gameboard */ addBridge(bridgePosition) { bridgePosition.map((bridgeLocation) => { const bridge = new BridgeClass(this.gameService, this.ctx, this.level.length); bridge.move({ x: bridgeLocation.position.x, y: bridgeLocation.position.y }); this.level.push(bridge); }); } /** * Initialize the gameboard * @param now the current time */ animate(now = 0) { this.levelOne.animate(); this.path.animate(now); this.level.map((level) => { level.animate(); }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtZWJvYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmlzbS9zcmMvbGliL3NlcnZpY2UvZ2FtZWJvYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFxQjNCOztPQUVHO0lBQ0gsWUFBb0IsV0FBd0IsRUFBVSxHQUE2QjtRQUEvRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQTBCO1FBQ2pGLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWhCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRWhFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLE1B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RyxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDbkMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2FtZVNlcnZpY2UgfSBmcm9tICcuL2dhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBJQXNzZXQgfSBmcm9tICcuLi9pbnRlcmZhY2UvYXNzZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IExldmVsQ2xhc3MgfSBmcm9tICcuLi9sZXZlbC9sZXZlbC5jbGFzcyc7XG5pbXBvcnQgeyBCcmlkZ2VDbGFzcyB9IGZyb20gJy4uL2xldmVsL2JyaWRnZS9icmlkZ2UuY2xhc3MnO1xuaW1wb3J0IHsgQXNzZXRUeXBlRW51bSB9IGZyb20gJy4uL2VudW0vYXNzZXQtdHlwZS5lbnVtJztcbmltcG9ydCB7IEFzc2V0TG9jYXRpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVsL2Fzc2V0LWxvY2F0aW9uLm1vZGVsJztcbmltcG9ydCB7IExldmVsT25lQ2xhc3MgfSBmcm9tICcuLi9sZXZlbC9sZXZlbC1vbmUvbGV2ZWwtb25lLmNsYXNzJztcbmltcG9ydCB7IFBhdGhDbGFzcyB9IGZyb20gJy4uL2xldmVsL3BhdGgvcGF0aC5jbGFzcyc7XG5pbXBvcnQgeyBQYXRoU2VydmljZSB9IGZyb20gJy4vcGF0aC5zZXJ2aWNlJztcblxuLyoqXG4gKiBUaGUgZ2FtZWJvYXJkIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNsYXNzIEdhbWVib2FyZFNlcnZpY2Uge1xuICAvKipcbiAgICogVGhlIGxldmVsXG4gICAqL1xuICBwcml2YXRlIGxldmVsOiBMZXZlbENsYXNzW107XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoXG4gICAqL1xuICBwcml2YXRlIHBhdGg6IFBhdGhDbGFzcztcblxuICAvKipcbiAgICogVGhlIGdhbWVib2FyZCBvbmVcbiAgICovXG4gIHByaXZhdGUgbGV2ZWxPbmU6IExldmVsT25lQ2xhc3M7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoU2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXRoU2VydmljZTogUGF0aFNlcnZpY2U7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnYW1lU2VydmljZTogR2FtZVNlcnZpY2UsIHByaXZhdGUgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIHtcbiAgICB0aGlzLmxldmVsID0gW107XG5cbiAgICBjb25zdCBnYW1lYm9hcmRQb3NpdGlvbnMgPSB0aGlzLmdhbWVTZXJ2aWNlLmdldExldmVsUG9zaXRpb25zKCk7XG5cbiAgICB0aGlzLmxldmVsT25lID0gbmV3IExldmVsT25lQ2xhc3ModGhpcy5nYW1lU2VydmljZSwgdGhpcy5jdHgsIDEpO1xuICAgIHRoaXMucGF0aFNlcnZpY2UgPSBuZXcgUGF0aFNlcnZpY2UoKTtcblxuICAgIHRoaXMucGF0aCA9IG5ldyBQYXRoQ2xhc3ModGhpcy5nYW1lU2VydmljZSwgdGhpcy5jdHgpO1xuICAgIHRoaXMuYnVpbGRQYXRocygpO1xuXG4gICAgdGhpcy5hZGRCcmlkZ2UoZ2FtZWJvYXJkUG9zaXRpb25zLmZpbHRlcigocG9zaXRpb246IEFzc2V0TG9jYXRpb25Nb2RlbCkgPT4gcG9zaXRpb24udHlwZSA9PT0gQXNzZXRUeXBlRW51bS5icmlkZ2UpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBQYXRoc1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFBhdGhzKCk6IHZvaWQge1xuICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAqL1xuICAgIHRoaXMuZ2FtZVNlcnZpY2UuZ2V0QWxpZW5CYXNlUG9zaXRpb25zKCkubWFwKCgpID0+IHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHBhdGhzXG4gICAqL1xuICBwcml2YXRlIHNldFBhdGgoKTogdm9pZCB7XG4gICAgY29uc3QgYWxsUGF0aHM6IElBc3NldFtdID0gW107XG4gICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovXG4gICAgY29uc3QgcGF0aHMgPSB7fTtcbiAgICB0aGlzLmdhbWVTZXJ2aWNlLmdldEFsaWVuQmFzZVBvc2l0aW9ucygpLm1hcCgoYmFzZVBvc2l0aW9uOiBJQXNzZXQpID0+IHtcbiAgICAgIHRoaXMucGF0aFNlcnZpY2VcbiAgICAgICAgLmZpbmRTaG9ydGVzdFBhdGgoXG4gICAgICAgICAgdGhpcy5nYW1lU2VydmljZS5jb252ZXJ0SUFzc2V0VG9HYW1lYm9hcmRJQXNzZXQoYmFzZVBvc2l0aW9uKSxcbiAgICAgICAgICB0aGlzLmdhbWVTZXJ2aWNlLmdldEdhbWVCb2FyZCgpXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgocG9zaXRpb246IElBc3NldCkgPT4ge1xuICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhdGhzLCBwb3NpdGlvbi54KSkge1xuICAgICAgICAgICAgcGF0aHNbcG9zaXRpb24ueF0gPSB7fTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovXG4gICAgICAgICAgcGF0aHNbcG9zaXRpb24ueF1bcG9zaXRpb24ueV0gPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIE9iamVjdC5rZXlzKHBhdGhzKS5tYXAoKHhLZXk6IHN0cmluZykgPT4ge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovXG4gICAgICBPYmplY3Qua2V5cyhwYXRoc1t4S2V5XSkubWFwKCh5S2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgYWxsUGF0aHMucHVzaCh7XG4gICAgICAgICAgeDogTnVtYmVyKHhLZXkpLFxuICAgICAgICAgIHk6IE51bWJlcih5S2V5KVxuICAgICAgICB9IGFzIElBc3NldCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMucGF0aC5zZXRQYXRoKGFsbFBhdGhzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbmltYXRlIHRoZSBwYXRoXG4gICAqXG4gICAqL1xuICBwdWJsaWMgaW5pdFBhdGgoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRQYXRoKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBicmlkZ2UgZ2FtZWJvYXJkXG4gICAqL1xuICBwcml2YXRlIGFkZEJyaWRnZShicmlkZ2VQb3NpdGlvbjogQXNzZXRMb2NhdGlvbk1vZGVsW10pOiB2b2lkIHtcbiAgICBicmlkZ2VQb3NpdGlvbi5tYXAoKGJyaWRnZUxvY2F0aW9uOiBBc3NldExvY2F0aW9uTW9kZWwpID0+IHtcbiAgICAgIGNvbnN0IGJyaWRnZSA9IG5ldyBCcmlkZ2VDbGFzcyh0aGlzLmdhbWVTZXJ2aWNlLCB0aGlzLmN0eCwgdGhpcy5sZXZlbC5sZW5ndGgpO1xuICAgICAgYnJpZGdlLm1vdmUoe1xuICAgICAgICB4OiBicmlkZ2VMb2NhdGlvbi5wb3NpdGlvbi54LFxuICAgICAgICB5OiBicmlkZ2VMb2NhdGlvbi5wb3NpdGlvbi55XG4gICAgICB9IGFzIElBc3NldCk7XG5cbiAgICAgIHRoaXMubGV2ZWwucHVzaChicmlkZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGdhbWVib2FyZFxuICAgKiBAcGFyYW0gbm93IHRoZSBjdXJyZW50IHRpbWVcbiAgICovXG4gIHB1YmxpYyBhbmltYXRlKG5vdyA9IDApOiB2b2lkIHtcbiAgICB0aGlzLmxldmVsT25lLmFuaW1hdGUoKTtcblxuICAgIHRoaXMucGF0aC5hbmltYXRlKG5vdyk7XG5cbiAgICB0aGlzLmxldmVsLm1hcCgobGV2ZWw6IExldmVsQ2xhc3MpID0+IHtcbiAgICAgIGxldmVsLmFuaW1hdGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19