@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
JavaScript
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==