UNPKG

@firestone-hs/replay-parser

Version:

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

54 lines 8.52 kB
import uniq from 'lodash-es/uniq'; import { ActionHelper } from '../../services/action/action-helper'; import { Action } from './action'; export class MulliganCardAction extends Action { constructor(allCards) { super(allCards); } static create(newAction, allCards) { return Object.assign(new MulliganCardAction(allCards), newAction); } update(entities) { return Object.assign(new MulliganCardAction(this.allCards), this, { entities, }); } enrichWithText(allEntitiesSoFar) { const textRaw = this.buildMulliganText(this.playerMulligan, allEntitiesSoFar) + '\n' + this.buildMulliganText(this.opponentMulligan, allEntitiesSoFar); return Object.assign(new MulliganCardAction(this.allCards), this, { textRaw, }); } buildMulliganText(cards, allEntitiesSoFar) { if (!cards || cards.length === 0) { return ''; } const ownerNames = uniq(cards .map(entityId => ActionHelper.getOwner(this.entities, entityId)) .map(playerEntity => playerEntity.name)); if (ownerNames.length !== 1) { console.warn('Invalid grouping of cards ' + ownerNames + ', ' + cards); return ''; } const ownerName = ownerNames[0]; const mulliganedCards = cards .map(entityId => ActionHelper.getCardId(this.entities, entityId, allEntitiesSoFar)) .map(cardId => this.allCards.getCard(cardId)); let mulliganInfo = ''; // We don't have the mulligan info, so we just display the amount of cards being mulliganed if (mulliganedCards.some(card => !card || !card.name)) { mulliganInfo = `${mulliganedCards.length} cards`; } else { mulliganInfo = mulliganedCards.map(card => card.name).join(', '); } const textRaw = `\t${ownerName} mulligans ${mulliganInfo}`; return textRaw; } getInstance() { return new MulliganCardAction(this.allCards); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsbGlnYW4tY2FyZC1hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBsYXktcGFyc2VyL3NyYy9saWIvbW9kZWxzL2FjdGlvbi9tdWxsaWdhbi1jYXJkLWFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLElBQUksTUFBTSxnQkFBZ0IsQ0FBQztBQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsTUFBTTtJQUk3QyxZQUFZLFFBQXlCO1FBQ3BDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBeUI7UUFDeEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxRQUE2QjtRQUMxQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFO1lBQ2pFLFFBQVE7U0FDUixDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0sY0FBYyxDQUFDLGdCQUFxQztRQUMxRCxNQUFNLE9BQU8sR0FDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztZQUM3RCxJQUFJO1lBQ0osSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUU7WUFDakUsT0FBTztTQUNQLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUF3QixFQUFFLGdCQUFxQztRQUN4RixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sRUFBRSxDQUFDO1NBQ1Y7UUFDRCxNQUFNLFVBQVUsR0FBYSxJQUFJLENBQ2hDLEtBQUs7YUFDSCxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDL0QsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUN4QyxDQUFDO1FBQ0YsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLFVBQVUsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDdkUsT0FBTyxFQUFFLENBQUM7U0FDVjtRQUNELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxNQUFNLGVBQWUsR0FBRyxLQUFLO2FBQzNCLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzthQUNsRixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9DLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QiwyRkFBMkY7UUFDM0YsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEQsWUFBWSxHQUFHLEdBQUcsZUFBZSxDQUFDLE1BQU0sUUFBUSxDQUFDO1NBQ2pEO2FBQU07WUFDTixZQUFZLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakU7UUFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLFNBQVMsY0FBYyxZQUFZLEVBQUUsQ0FBQztRQUMzRCxPQUFPLE9BQU8sQ0FBQztJQUNoQixDQUFDO0lBRVMsV0FBVztRQUNwQixPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hcCB9IGZyb20gJ2ltbXV0YWJsZSc7XHJcbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC1lcy91bmlxJztcclxuaW1wb3J0IHsgQWN0aW9uSGVscGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWN0aW9uL2FjdGlvbi1oZWxwZXInO1xyXG5pbXBvcnQgeyBBbGxDYXJkc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbGwtY2FyZHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uL2dhbWUvZW50aXR5JztcclxuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xyXG5cclxuZXhwb3J0IGNsYXNzIE11bGxpZ2FuQ2FyZEFjdGlvbiBleHRlbmRzIEFjdGlvbiB7XHJcblx0cmVhZG9ubHkgcGxheWVyTXVsbGlnYW46IHJlYWRvbmx5IG51bWJlcltdO1xyXG5cdHJlYWRvbmx5IG9wcG9uZW50TXVsbGlnYW46IHJlYWRvbmx5IG51bWJlcltdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihhbGxDYXJkczogQWxsQ2FyZHNTZXJ2aWNlKSB7XHJcblx0XHRzdXBlcihhbGxDYXJkcyk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgc3RhdGljIGNyZWF0ZShuZXdBY3Rpb24sIGFsbENhcmRzOiBBbGxDYXJkc1NlcnZpY2UpOiBNdWxsaWdhbkNhcmRBY3Rpb24ge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IE11bGxpZ2FuQ2FyZEFjdGlvbihhbGxDYXJkcyksIG5ld0FjdGlvbik7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgdXBkYXRlKGVudGl0aWVzOiBNYXA8bnVtYmVyLCBFbnRpdHk+KTogTXVsbGlnYW5DYXJkQWN0aW9uIHtcclxuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBNdWxsaWdhbkNhcmRBY3Rpb24odGhpcy5hbGxDYXJkcyksIHRoaXMsIHtcclxuXHRcdFx0ZW50aXRpZXMsXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBlbnJpY2hXaXRoVGV4dChhbGxFbnRpdGllc1NvRmFyOiBNYXA8bnVtYmVyLCBFbnRpdHk+KTogTXVsbGlnYW5DYXJkQWN0aW9uIHtcclxuXHRcdGNvbnN0IHRleHRSYXcgPVxyXG5cdFx0XHR0aGlzLmJ1aWxkTXVsbGlnYW5UZXh0KHRoaXMucGxheWVyTXVsbGlnYW4sIGFsbEVudGl0aWVzU29GYXIpICtcclxuXHRcdFx0J1xcbicgK1xyXG5cdFx0XHR0aGlzLmJ1aWxkTXVsbGlnYW5UZXh0KHRoaXMub3Bwb25lbnRNdWxsaWdhbiwgYWxsRW50aXRpZXNTb0Zhcik7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgTXVsbGlnYW5DYXJkQWN0aW9uKHRoaXMuYWxsQ2FyZHMpLCB0aGlzLCB7XHJcblx0XHRcdHRleHRSYXcsXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRNdWxsaWdhblRleHQoY2FyZHM6IHJlYWRvbmx5IG51bWJlcltdLCBhbGxFbnRpdGllc1NvRmFyOiBNYXA8bnVtYmVyLCBFbnRpdHk+KTogc3RyaW5nIHtcclxuXHRcdGlmICghY2FyZHMgfHwgY2FyZHMubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdHJldHVybiAnJztcclxuXHRcdH1cclxuXHRcdGNvbnN0IG93bmVyTmFtZXM6IHN0cmluZ1tdID0gdW5pcShcclxuXHRcdFx0Y2FyZHNcclxuXHRcdFx0XHQubWFwKGVudGl0eUlkID0+IEFjdGlvbkhlbHBlci5nZXRPd25lcih0aGlzLmVudGl0aWVzLCBlbnRpdHlJZCkpXHJcblx0XHRcdFx0Lm1hcChwbGF5ZXJFbnRpdHkgPT4gcGxheWVyRW50aXR5Lm5hbWUpLFxyXG5cdFx0KTtcclxuXHRcdGlmIChvd25lck5hbWVzLmxlbmd0aCAhPT0gMSkge1xyXG5cdFx0XHRjb25zb2xlLndhcm4oJ0ludmFsaWQgZ3JvdXBpbmcgb2YgY2FyZHMgJyArIG93bmVyTmFtZXMgKyAnLCAnICsgY2FyZHMpO1xyXG5cdFx0XHRyZXR1cm4gJyc7XHJcblx0XHR9XHJcblx0XHRjb25zdCBvd25lck5hbWUgPSBvd25lck5hbWVzWzBdO1xyXG5cdFx0Y29uc3QgbXVsbGlnYW5lZENhcmRzID0gY2FyZHNcclxuXHRcdFx0Lm1hcChlbnRpdHlJZCA9PiBBY3Rpb25IZWxwZXIuZ2V0Q2FyZElkKHRoaXMuZW50aXRpZXMsIGVudGl0eUlkLCBhbGxFbnRpdGllc1NvRmFyKSlcclxuXHRcdFx0Lm1hcChjYXJkSWQgPT4gdGhpcy5hbGxDYXJkcy5nZXRDYXJkKGNhcmRJZCkpO1xyXG5cdFx0bGV0IG11bGxpZ2FuSW5mbyA9ICcnO1xyXG5cdFx0Ly8gV2UgZG9uJ3QgaGF2ZSB0aGUgbXVsbGlnYW4gaW5mbywgc28gd2UganVzdCBkaXNwbGF5IHRoZSBhbW91bnQgb2YgY2FyZHMgYmVpbmcgbXVsbGlnYW5lZFxyXG5cdFx0aWYgKG11bGxpZ2FuZWRDYXJkcy5zb21lKGNhcmQgPT4gIWNhcmQgfHwgIWNhcmQubmFtZSkpIHtcclxuXHRcdFx0bXVsbGlnYW5JbmZvID0gYCR7bXVsbGlnYW5lZENhcmRzLmxlbmd0aH0gY2FyZHNgO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0bXVsbGlnYW5JbmZvID0gbXVsbGlnYW5lZENhcmRzLm1hcChjYXJkID0+IGNhcmQubmFtZSkuam9pbignLCAnKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHRleHRSYXcgPSBgXFx0JHtvd25lck5hbWV9IG11bGxpZ2FucyAke211bGxpZ2FuSW5mb31gO1xyXG5cdFx0cmV0dXJuIHRleHRSYXc7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgZ2V0SW5zdGFuY2UoKTogQWN0aW9uIHtcclxuXHRcdHJldHVybiBuZXcgTXVsbGlnYW5DYXJkQWN0aW9uKHRoaXMuYWxsQ2FyZHMpO1xyXG5cdH1cclxufVxyXG4iXX0=