UNPKG

@firestone-hs/replay-parser

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.9.

52 lines 8.31 kB
import { Injectable } from '@angular/core'; import { Game } from '../../models/game/game'; import * as i0 from "@angular/core"; import * as i1 from "../all-cards.service"; export class TargetsParserService { constructor(allCards) { this.allCards = allCards; } parseTargetsForLastTurn(game) { let turns = game.turns; const numberOfTurns = turns.size; const turn = game.turns.get(numberOfTurns - 1); const enrichedTurn = this.enrichTurn(turn); turns = turns.set(numberOfTurns - 1, enrichedTurn); return Game.createGame(game, { turns }); } enrichTurn(turn) { const newActions = []; for (let i = 0; i < turn.actions.length; i++) { const previousAction = i === 0 ? null : newActions[i - 1]; const newAction = this.enrichAction(turn.actions[i], previousAction); newActions.push(newAction); } return turn.update({ actions: newActions }); } enrichAction(action, previousAction) { if (this.hasTarget(action)) { const targetPair = [[action.originId, action.targetId]]; return action.updateAction({ targets: targetPair }); } else if (this.hasTargets(action)) { const targetPairs = action.targetIds.map(targetId => [action.originId, targetId]); return action.updateAction({ targets: targetPairs }); } return action; } hasTarget(action) { return 'originId' in action && 'targetId' in action && action.originId && action.targetId; } hasTargets(action) { return 'originId' in action && 'targetIds' in action && action.originId && action.targetIds; } } TargetsParserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TargetsParserService, deps: [{ token: i1.AllCardsService }], target: i0.ɵɵFactoryTarget.Injectable }); TargetsParserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TargetsParserService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TargetsParserService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.AllCardsService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0cy1wYXJzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcGxheS1wYXJzZXIvc3JjL2xpYi9zZXJ2aWNlcy9nYW1lcGlwZWxpbmUvdGFyZ2V0cy1wYXJzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBTzlDLE1BQU0sT0FBTyxvQkFBb0I7SUFDaEMsWUFBb0IsUUFBeUI7UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRTFDLHVCQUF1QixDQUFDLElBQVU7UUFDeEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN2QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBVSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLFVBQVUsQ0FBQyxJQUFVO1FBQzVCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUN0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0MsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNyRSxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQStCLEVBQVUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTyxZQUFZLENBQUMsTUFBYyxFQUFFLGNBQXNCO1FBQzFELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzQixNQUFNLFVBQVUsR0FBZ0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDckYsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBWSxDQUFDLENBQUM7U0FDOUQ7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQ3ZDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBcUIsQ0FDNUIsQ0FBQztZQUNqQyxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFZLENBQUMsQ0FBQztTQUMvRDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVPLFNBQVMsQ0FBQyxNQUFXO1FBQzVCLE9BQU8sVUFBVSxJQUFJLE1BQU0sSUFBSSxVQUFVLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUMzRixDQUFDO0lBRU8sVUFBVSxDQUFDLE1BQVc7UUFDN0IsT0FBTyxVQUFVLElBQUksTUFBTSxJQUFJLFdBQVcsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzdGLENBQUM7O2lIQXpDVyxvQkFBb0I7cUhBQXBCLG9CQUFvQixjQUZwQixNQUFNOzJGQUVOLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24vYWN0aW9uJztcclxuaW1wb3J0IHsgSGFzVGFyZ2V0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbi9oYXMtdGFyZ2V0JztcclxuaW1wb3J0IHsgSGFzVGFyZ2V0cyB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24vaGFzLXRhcmdldHMnO1xyXG5pbXBvcnQgeyBHYW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dhbWUvZ2FtZSc7XHJcbmltcG9ydCB7IFR1cm4gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2FtZS90dXJuJztcclxuaW1wb3J0IHsgQWxsQ2FyZHNTZXJ2aWNlIH0gZnJvbSAnLi4vYWxsLWNhcmRzLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhcmdldHNQYXJzZXJTZXJ2aWNlIHtcclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGFsbENhcmRzOiBBbGxDYXJkc1NlcnZpY2UpIHt9XHJcblxyXG5cdHB1YmxpYyBwYXJzZVRhcmdldHNGb3JMYXN0VHVybihnYW1lOiBHYW1lKTogR2FtZSB7XHJcblx0XHRsZXQgdHVybnMgPSBnYW1lLnR1cm5zO1xyXG5cdFx0Y29uc3QgbnVtYmVyT2ZUdXJucyA9IHR1cm5zLnNpemU7XHJcblx0XHRjb25zdCB0dXJuID0gZ2FtZS50dXJucy5nZXQobnVtYmVyT2ZUdXJucyAtIDEpO1xyXG5cdFx0Y29uc3QgZW5yaWNoZWRUdXJuID0gdGhpcy5lbnJpY2hUdXJuKHR1cm4pO1xyXG5cdFx0dHVybnMgPSB0dXJucy5zZXQobnVtYmVyT2ZUdXJucyAtIDEsIGVucmljaGVkVHVybik7XHJcblx0XHRyZXR1cm4gR2FtZS5jcmVhdGVHYW1lKGdhbWUsIHsgdHVybnMgfSBhcyBHYW1lKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZW5yaWNoVHVybih0dXJuOiBUdXJuKTogVHVybiB7XHJcblx0XHRjb25zdCBuZXdBY3Rpb25zID0gW107XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHR1cm4uYWN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRjb25zdCBwcmV2aW91c0FjdGlvbiA9IGkgPT09IDAgPyBudWxsIDogbmV3QWN0aW9uc1tpIC0gMV07XHJcblx0XHRcdGNvbnN0IG5ld0FjdGlvbiA9IHRoaXMuZW5yaWNoQWN0aW9uKHR1cm4uYWN0aW9uc1tpXSwgcHJldmlvdXNBY3Rpb24pO1xyXG5cdFx0XHRuZXdBY3Rpb25zLnB1c2gobmV3QWN0aW9uKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0dXJuLnVwZGF0ZSh7IGFjdGlvbnM6IG5ld0FjdGlvbnMgYXMgcmVhZG9ubHkgQWN0aW9uW10gfSBhcyBUdXJuKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZW5yaWNoQWN0aW9uKGFjdGlvbjogQWN0aW9uLCBwcmV2aW91c0FjdGlvbjogQWN0aW9uKTogQWN0aW9uIHtcclxuXHRcdGlmICh0aGlzLmhhc1RhcmdldChhY3Rpb24pKSB7XHJcblx0XHRcdGNvbnN0IHRhcmdldFBhaXI6IHJlYWRvbmx5IFtudW1iZXIsIG51bWJlcl1bXSA9IFtbYWN0aW9uLm9yaWdpbklkLCBhY3Rpb24udGFyZ2V0SWRdXTtcclxuXHRcdFx0cmV0dXJuIGFjdGlvbi51cGRhdGVBY3Rpb24oeyB0YXJnZXRzOiB0YXJnZXRQYWlyIH0gYXMgQWN0aW9uKTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5oYXNUYXJnZXRzKGFjdGlvbikpIHtcclxuXHRcdFx0Y29uc3QgdGFyZ2V0UGFpcnMgPSBhY3Rpb24udGFyZ2V0SWRzLm1hcChcclxuXHRcdFx0XHR0YXJnZXRJZCA9PiBbYWN0aW9uLm9yaWdpbklkLCB0YXJnZXRJZF0gYXMgW251bWJlciwgbnVtYmVyXSxcclxuXHRcdFx0KSBhcyByZWFkb25seSBbbnVtYmVyLCBudW1iZXJdW107XHJcblx0XHRcdHJldHVybiBhY3Rpb24udXBkYXRlQWN0aW9uKHsgdGFyZ2V0czogdGFyZ2V0UGFpcnMgfSBhcyBBY3Rpb24pO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGFjdGlvbjtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaGFzVGFyZ2V0KGFjdGlvbjogYW55KTogYWN0aW9uIGlzIEhhc1RhcmdldCB7XHJcblx0XHRyZXR1cm4gJ29yaWdpbklkJyBpbiBhY3Rpb24gJiYgJ3RhcmdldElkJyBpbiBhY3Rpb24gJiYgYWN0aW9uLm9yaWdpbklkICYmIGFjdGlvbi50YXJnZXRJZDtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaGFzVGFyZ2V0cyhhY3Rpb246IGFueSk6IGFjdGlvbiBpcyBIYXNUYXJnZXRzIHtcclxuXHRcdHJldHVybiAnb3JpZ2luSWQnIGluIGFjdGlvbiAmJiAndGFyZ2V0SWRzJyBpbiBhY3Rpb24gJiYgYWN0aW9uLm9yaWdpbklkICYmIGFjdGlvbi50YXJnZXRJZHM7XHJcblx0fVxyXG59XHJcbiJdfQ==