UNPKG

@firestone-hs/replay-parser

Version:

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

44 lines 7.7 kB
import { GameTag, PlayState } from '@firestone-hs/reference-data'; import { EndGameAction } from '../../models/action/end-game-action'; import { TagChangeHistoryItem } from '../../models/history/tag-change-history-item'; import { ActionHelper } from './action-helper'; export class EndGameParser { constructor(allCards) { this.allCards = allCards; } applies(item) { return (item instanceof TagChangeHistoryItem && item.tag.tag === GameTag.PLAYSTATE && [PlayState.LOST, PlayState.WON, PlayState.TIED, PlayState.CONCEDED].indexOf(item.tag.value) !== -1); } parse(item, currentTurn, entitiesBeforeAction, history, players) { // // console.log('end game action', item); return [ EndGameAction.create({ timestamp: item.timestamp, index: item.index, entityId: players[0].id, opponentId: players[1].id, winStatus: [[item.tag.entity, item.tag.value]], }, this.allCards), ]; } reduce(actions) { return ActionHelper.combineActions(actions, (previous, current) => this.shouldMergeActions(previous, current), (previous, current) => this.mergeActions(previous, current)); } shouldMergeActions(previous, current) { // Absorbs all actions after the end game return previous instanceof EndGameAction; } mergeActions(previousAction, currentAction) { const winStatus = [ ...(previousAction.winStatus || []), ...(currentAction.winStatus || []), ]; // // console.log('merging actions', winStatus, previousAction); return previousAction.updateAction({ winStatus, }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kLWdhbWUtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwbGF5LXBhcnNlci9zcmMvbGliL3NlcnZpY2VzL2FjdGlvbi9lbmQtZ2FtZS1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFJcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE1BQU0sT0FBTyxhQUFhO0lBQ3pCLFlBQTZCLFFBQXlCO1FBQXpCLGFBQVEsR0FBUixRQUFRLENBQWlCO0lBQUcsQ0FBQztJQUVuRCxPQUFPLENBQUMsSUFBaUI7UUFDL0IsT0FBTyxDQUNOLElBQUksWUFBWSxvQkFBb0I7WUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLFNBQVM7WUFDbEMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ2xHLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUNYLElBQTBCLEVBQzFCLFdBQW1CLEVBQ25CLG9CQUF5QyxFQUN6QyxPQUErQixFQUMvQixPQUFnQztRQUVoQywyQ0FBMkM7UUFDM0MsT0FBTztZQUNOLGFBQWEsQ0FBQyxNQUFNLENBQ25CO2dCQUNDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZCLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDekIsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlDLEVBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FDYjtTQUNELENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQTBCO1FBQ3ZDLE9BQU8sWUFBWSxDQUFDLGNBQWMsQ0FDakMsT0FBTyxFQUNQLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFDakUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FDM0QsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxRQUFnQixFQUFFLE9BQWU7UUFDM0QseUNBQXlDO1FBQ3pDLE9BQU8sUUFBUSxZQUFZLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRU8sWUFBWSxDQUFDLGNBQTZCLEVBQUUsYUFBNEI7UUFDL0UsTUFBTSxTQUFTLEdBQWdDO1lBQzlDLEdBQUcsQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7U0FDbEMsQ0FBQztRQUNGLGdFQUFnRTtRQUNoRSxPQUFPLGNBQWMsQ0FBQyxZQUFZLENBQWdCO1lBQ2pELFNBQVM7U0FDUSxDQUFDLENBQUM7SUFDckIsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2FtZVRhZywgUGxheVN0YXRlIH0gZnJvbSAnQGZpcmVzdG9uZS1ocy9yZWZlcmVuY2UtZGF0YSc7XHJcbmltcG9ydCB7IE1hcCB9IGZyb20gJ2ltbXV0YWJsZSc7XHJcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24vYWN0aW9uJztcclxuaW1wb3J0IHsgRW5kR2FtZUFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24vZW5kLWdhbWUtYWN0aW9uJztcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dhbWUvZW50aXR5JztcclxuaW1wb3J0IHsgUGxheWVyRW50aXR5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dhbWUvcGxheWVyLWVudGl0eSc7XHJcbmltcG9ydCB7IEhpc3RvcnlJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2hpc3RvcnkvaGlzdG9yeS1pdGVtJztcclxuaW1wb3J0IHsgVGFnQ2hhbmdlSGlzdG9yeUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaGlzdG9yeS90YWctY2hhbmdlLWhpc3RvcnktaXRlbSc7XHJcbmltcG9ydCB7IEFsbENhcmRzU2VydmljZSB9IGZyb20gJy4uL2FsbC1jYXJkcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aW9uSGVscGVyIH0gZnJvbSAnLi9hY3Rpb24taGVscGVyJztcclxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSAnLi9wYXJzZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIEVuZEdhbWVQYXJzZXIgaW1wbGVtZW50cyBQYXJzZXIge1xyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYWxsQ2FyZHM6IEFsbENhcmRzU2VydmljZSkge31cclxuXHJcblx0cHVibGljIGFwcGxpZXMoaXRlbTogSGlzdG9yeUl0ZW0pOiBib29sZWFuIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdGl0ZW0gaW5zdGFuY2VvZiBUYWdDaGFuZ2VIaXN0b3J5SXRlbSAmJlxyXG5cdFx0XHRpdGVtLnRhZy50YWcgPT09IEdhbWVUYWcuUExBWVNUQVRFICYmXHJcblx0XHRcdFtQbGF5U3RhdGUuTE9TVCwgUGxheVN0YXRlLldPTiwgUGxheVN0YXRlLlRJRUQsIFBsYXlTdGF0ZS5DT05DRURFRF0uaW5kZXhPZihpdGVtLnRhZy52YWx1ZSkgIT09IC0xXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHBhcnNlKFxyXG5cdFx0aXRlbTogVGFnQ2hhbmdlSGlzdG9yeUl0ZW0sXHJcblx0XHRjdXJyZW50VHVybjogbnVtYmVyLFxyXG5cdFx0ZW50aXRpZXNCZWZvcmVBY3Rpb246IE1hcDxudW1iZXIsIEVudGl0eT4sXHJcblx0XHRoaXN0b3J5OiByZWFkb25seSBIaXN0b3J5SXRlbVtdLFxyXG5cdFx0cGxheWVyczogcmVhZG9ubHkgUGxheWVyRW50aXR5W10sXHJcblx0KTogQWN0aW9uW10ge1xyXG5cdFx0Ly8gLy8gY29uc29sZS5sb2coJ2VuZCBnYW1lIGFjdGlvbicsIGl0ZW0pO1xyXG5cdFx0cmV0dXJuIFtcclxuXHRcdFx0RW5kR2FtZUFjdGlvbi5jcmVhdGUoXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0dGltZXN0YW1wOiBpdGVtLnRpbWVzdGFtcCxcclxuXHRcdFx0XHRcdGluZGV4OiBpdGVtLmluZGV4LFxyXG5cdFx0XHRcdFx0ZW50aXR5SWQ6IHBsYXllcnNbMF0uaWQsXHJcblx0XHRcdFx0XHRvcHBvbmVudElkOiBwbGF5ZXJzWzFdLmlkLFxyXG5cdFx0XHRcdFx0d2luU3RhdHVzOiBbW2l0ZW0udGFnLmVudGl0eSwgaXRlbS50YWcudmFsdWVdXSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHRoaXMuYWxsQ2FyZHMsXHJcblx0XHRcdCksXHJcblx0XHRdO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHJlZHVjZShhY3Rpb25zOiByZWFkb25seSBBY3Rpb25bXSk6IHJlYWRvbmx5IEFjdGlvbltdIHtcclxuXHRcdHJldHVybiBBY3Rpb25IZWxwZXIuY29tYmluZUFjdGlvbnM8RW5kR2FtZUFjdGlvbj4oXHJcblx0XHRcdGFjdGlvbnMsXHJcblx0XHRcdChwcmV2aW91cywgY3VycmVudCkgPT4gdGhpcy5zaG91bGRNZXJnZUFjdGlvbnMocHJldmlvdXMsIGN1cnJlbnQpLFxyXG5cdFx0XHQocHJldmlvdXMsIGN1cnJlbnQpID0+IHRoaXMubWVyZ2VBY3Rpb25zKHByZXZpb3VzLCBjdXJyZW50KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNob3VsZE1lcmdlQWN0aW9ucyhwcmV2aW91czogQWN0aW9uLCBjdXJyZW50OiBBY3Rpb24pOiBib29sZWFuIHtcclxuXHRcdC8vIEFic29yYnMgYWxsIGFjdGlvbnMgYWZ0ZXIgdGhlIGVuZCBnYW1lXHJcblx0XHRyZXR1cm4gcHJldmlvdXMgaW5zdGFuY2VvZiBFbmRHYW1lQWN0aW9uO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBtZXJnZUFjdGlvbnMocHJldmlvdXNBY3Rpb246IEVuZEdhbWVBY3Rpb24sIGN1cnJlbnRBY3Rpb246IEVuZEdhbWVBY3Rpb24pOiBFbmRHYW1lQWN0aW9uIHtcclxuXHRcdGNvbnN0IHdpblN0YXR1czogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXVtdID0gW1xyXG5cdFx0XHQuLi4ocHJldmlvdXNBY3Rpb24ud2luU3RhdHVzIHx8IFtdKSxcclxuXHRcdFx0Li4uKGN1cnJlbnRBY3Rpb24ud2luU3RhdHVzIHx8IFtdKSxcclxuXHRcdF07XHJcblx0XHQvLyAvLyBjb25zb2xlLmxvZygnbWVyZ2luZyBhY3Rpb25zJywgd2luU3RhdHVzLCBwcmV2aW91c0FjdGlvbik7XHJcblx0XHRyZXR1cm4gcHJldmlvdXNBY3Rpb24udXBkYXRlQWN0aW9uPEVuZEdhbWVBY3Rpb24+KHtcclxuXHRcdFx0d2luU3RhdHVzLFxyXG5cdFx0fSBhcyBFbmRHYW1lQWN0aW9uKTtcclxuXHR9XHJcbn1cclxuIl19