@firestone-hs/replay-parser
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.9.
49 lines • 8.12 kB
JavaScript
import { DiscoverAction } from '../../models/action/discover-action';
import { DiscoveryPickAction } from '../../models/action/discovery-pick-action';
import { StartTurnAction } from '../../models/action/start-turn-action';
import { ChosenEntityHistoryItem } from '../../models/history/chosen-entities-history-item';
import { ActionHelper } from './action-helper';
export class DiscoveryPickParser {
constructor(allCards) {
this.allCards = allCards;
}
applies(item) {
return item instanceof ChosenEntityHistoryItem && item.tag.cards && item.tag.cards.length === 1;
}
parse(item, currentTurn, entitiesBeforeAction, history) {
return [
DiscoveryPickAction.create({
timestamp: item.timestamp,
index: item.index,
owner: item.tag.playerID,
choice: item.tag.cards[0],
}, this.allCards),
];
}
reduce(actions) {
return ActionHelper.combineActions(actions, (previous, current) => this.shouldMergeActions(previous, current), (previous, current) => this.mergeActions(previous, current));
}
shouldMergeActions(previousAction, currentAction) {
// Merge it into the discover action
if (previousAction instanceof DiscoverAction && currentAction instanceof DiscoveryPickAction) {
return true;
}
else if (currentAction instanceof DiscoveryPickAction) {
// Mulligan is handled differently
if (!(previousAction instanceof StartTurnAction)) {
console.warn('removing discovery pick action', previousAction);
}
return true;
}
return false;
}
mergeActions(previousAction, currentAction) {
if (previousAction instanceof DiscoverAction && currentAction instanceof DiscoveryPickAction) {
return previousAction.updateAction({
chosen: [currentAction.choice],
});
}
return previousAction;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY292ZXJ5LXBpY2stcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwbGF5LXBhcnNlci9zcmMvbGliL3NlcnZpY2VzL2FjdGlvbi9kaXNjb3ZlcnktcGljay1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUc1RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsTUFBTSxPQUFPLG1CQUFtQjtJQUMvQixZQUFvQixRQUF5QjtRQUF6QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUFHLENBQUM7SUFFMUMsT0FBTyxDQUFDLElBQWlCO1FBQy9CLE9BQU8sSUFBSSxZQUFZLHVCQUF1QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVNLEtBQUssQ0FDWCxJQUE2QixFQUM3QixXQUFtQixFQUNuQixvQkFBeUMsRUFDekMsT0FBK0I7UUFFL0IsT0FBTztZQUNOLG1CQUFtQixDQUFDLE1BQU0sQ0FDekI7Z0JBQ0MsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVE7Z0JBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDekIsRUFDRCxJQUFJLENBQUMsUUFBUSxDQUNiO1NBQ0QsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsT0FBMEI7UUFDdkMsT0FBTyxZQUFZLENBQUMsY0FBYyxDQUNqQyxPQUFPLEVBQ1AsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUNqRSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLGNBQXNCLEVBQUUsYUFBcUI7UUFDdkUsb0NBQW9DO1FBQ3BDLElBQUksY0FBYyxZQUFZLGNBQWMsSUFBSSxhQUFhLFlBQVksbUJBQW1CLEVBQUU7WUFDN0YsT0FBTyxJQUFJLENBQUM7U0FDWjthQUFNLElBQUksYUFBYSxZQUFZLG1CQUFtQixFQUFFO1lBQ3hELGtDQUFrQztZQUNsQyxJQUFJLENBQUMsQ0FBQyxjQUFjLFlBQVksZUFBZSxDQUFDLEVBQUU7Z0JBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsY0FBYyxDQUFDLENBQUM7YUFDL0Q7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNaO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRU8sWUFBWSxDQUFDLGNBQXNCLEVBQUUsYUFBcUI7UUFDakUsSUFBSSxjQUFjLFlBQVksY0FBYyxJQUFJLGFBQWEsWUFBWSxtQkFBbUIsRUFBRTtZQUM3RixPQUFPLGNBQWMsQ0FBQyxZQUFZLENBQWlCO2dCQUNsRCxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFzQjthQUNqQyxDQUFDLENBQUM7U0FDckI7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN2QixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXAgfSBmcm9tICdpbW11dGFibGUnO1xyXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uL2FjdGlvbic7XHJcbmltcG9ydCB7IERpc2NvdmVyQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbi9kaXNjb3Zlci1hY3Rpb24nO1xyXG5pbXBvcnQgeyBEaXNjb3ZlcnlQaWNrQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbi9kaXNjb3ZlcnktcGljay1hY3Rpb24nO1xyXG5pbXBvcnQgeyBTdGFydFR1cm5BY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uL3N0YXJ0LXR1cm4tYWN0aW9uJztcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dhbWUvZW50aXR5JztcclxuaW1wb3J0IHsgQ2hvc2VuRW50aXR5SGlzdG9yeUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaGlzdG9yeS9jaG9zZW4tZW50aXRpZXMtaGlzdG9yeS1pdGVtJztcclxuaW1wb3J0IHsgSGlzdG9yeUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaGlzdG9yeS9oaXN0b3J5LWl0ZW0nO1xyXG5pbXBvcnQgeyBBbGxDYXJkc1NlcnZpY2UgfSBmcm9tICcuLi9hbGwtY2FyZHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGlvbkhlbHBlciB9IGZyb20gJy4vYWN0aW9uLWhlbHBlcic7XHJcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gJy4vcGFyc2VyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBEaXNjb3ZlcnlQaWNrUGFyc2VyIGltcGxlbWVudHMgUGFyc2VyIHtcclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGFsbENhcmRzOiBBbGxDYXJkc1NlcnZpY2UpIHt9XHJcblxyXG5cdHB1YmxpYyBhcHBsaWVzKGl0ZW06IEhpc3RvcnlJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gaXRlbSBpbnN0YW5jZW9mIENob3NlbkVudGl0eUhpc3RvcnlJdGVtICYmIGl0ZW0udGFnLmNhcmRzICYmIGl0ZW0udGFnLmNhcmRzLmxlbmd0aCA9PT0gMTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBwYXJzZShcclxuXHRcdGl0ZW06IENob3NlbkVudGl0eUhpc3RvcnlJdGVtLFxyXG5cdFx0Y3VycmVudFR1cm46IG51bWJlcixcclxuXHRcdGVudGl0aWVzQmVmb3JlQWN0aW9uOiBNYXA8bnVtYmVyLCBFbnRpdHk+LFxyXG5cdFx0aGlzdG9yeTogcmVhZG9ubHkgSGlzdG9yeUl0ZW1bXSxcclxuXHQpOiBBY3Rpb25bXSB7XHJcblx0XHRyZXR1cm4gW1xyXG5cdFx0XHREaXNjb3ZlcnlQaWNrQWN0aW9uLmNyZWF0ZShcclxuXHRcdFx0XHR7XHJcblx0XHRcdFx0XHR0aW1lc3RhbXA6IGl0ZW0udGltZXN0YW1wLFxyXG5cdFx0XHRcdFx0aW5kZXg6IGl0ZW0uaW5kZXgsXHJcblx0XHRcdFx0XHRvd25lcjogaXRlbS50YWcucGxheWVySUQsXHJcblx0XHRcdFx0XHRjaG9pY2U6IGl0ZW0udGFnLmNhcmRzWzBdLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0dGhpcy5hbGxDYXJkcyxcclxuXHRcdFx0KSxcclxuXHRcdF07XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgcmVkdWNlKGFjdGlvbnM6IHJlYWRvbmx5IEFjdGlvbltdKTogcmVhZG9ubHkgQWN0aW9uW10ge1xyXG5cdFx0cmV0dXJuIEFjdGlvbkhlbHBlci5jb21iaW5lQWN0aW9uczxBY3Rpb24+KFxyXG5cdFx0XHRhY3Rpb25zLFxyXG5cdFx0XHQocHJldmlvdXMsIGN1cnJlbnQpID0+IHRoaXMuc2hvdWxkTWVyZ2VBY3Rpb25zKHByZXZpb3VzLCBjdXJyZW50KSxcclxuXHRcdFx0KHByZXZpb3VzLCBjdXJyZW50KSA9PiB0aGlzLm1lcmdlQWN0aW9ucyhwcmV2aW91cywgY3VycmVudCksXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzaG91bGRNZXJnZUFjdGlvbnMocHJldmlvdXNBY3Rpb246IEFjdGlvbiwgY3VycmVudEFjdGlvbjogQWN0aW9uKTogYm9vbGVhbiB7XHJcblx0XHQvLyBNZXJnZSBpdCBpbnRvIHRoZSBkaXNjb3ZlciBhY3Rpb25cclxuXHRcdGlmIChwcmV2aW91c0FjdGlvbiBpbnN0YW5jZW9mIERpc2NvdmVyQWN0aW9uICYmIGN1cnJlbnRBY3Rpb24gaW5zdGFuY2VvZiBEaXNjb3ZlcnlQaWNrQWN0aW9uKSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fSBlbHNlIGlmIChjdXJyZW50QWN0aW9uIGluc3RhbmNlb2YgRGlzY292ZXJ5UGlja0FjdGlvbikge1xyXG5cdFx0XHQvLyBNdWxsaWdhbiBpcyBoYW5kbGVkIGRpZmZlcmVudGx5XHJcblx0XHRcdGlmICghKHByZXZpb3VzQWN0aW9uIGluc3RhbmNlb2YgU3RhcnRUdXJuQWN0aW9uKSkge1xyXG5cdFx0XHRcdGNvbnNvbGUud2FybigncmVtb3ZpbmcgZGlzY292ZXJ5IHBpY2sgYWN0aW9uJywgcHJldmlvdXNBY3Rpb24pO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBtZXJnZUFjdGlvbnMocHJldmlvdXNBY3Rpb246IEFjdGlvbiwgY3VycmVudEFjdGlvbjogQWN0aW9uKTogQWN0aW9uIHtcclxuXHRcdGlmIChwcmV2aW91c0FjdGlvbiBpbnN0YW5jZW9mIERpc2NvdmVyQWN0aW9uICYmIGN1cnJlbnRBY3Rpb24gaW5zdGFuY2VvZiBEaXNjb3ZlcnlQaWNrQWN0aW9uKSB7XHJcblx0XHRcdHJldHVybiBwcmV2aW91c0FjdGlvbi51cGRhdGVBY3Rpb248RGlzY292ZXJBY3Rpb24+KHtcclxuXHRcdFx0XHRjaG9zZW46IFtjdXJyZW50QWN0aW9uLmNob2ljZV0gYXMgcmVhZG9ubHkgbnVtYmVyW10sXHJcblx0XHRcdH0gYXMgRGlzY292ZXJBY3Rpb24pO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHByZXZpb3VzQWN0aW9uO1xyXG5cdH1cclxufVxyXG4iXX0=