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.7 kB
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 = cards .map((entityId) => ActionHelper.getOwner(this.entities, entityId)) .map((playerEntity) => playerEntity.name) .filter((name, index, self) => self.indexOf(name) === index); 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsbGlnYW4tY2FyZC1hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBsYXktcGFyc2VyL3NyYy9saWIvbW9kZWxzL2FjdGlvbi9tdWxsaWdhbi1jYXJkLWFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsTUFBTTtJQUk3QyxZQUFZLFFBQXlCO1FBQ3BDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBeUI7UUFDeEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxRQUE2QjtRQUMxQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFO1lBQ2pFLFFBQVE7U0FDUixDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0sY0FBYyxDQUFDLGdCQUFxQztRQUMxRCxNQUFNLE9BQU8sR0FDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztZQUM3RCxJQUFJO1lBQ0osSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUU7WUFDakUsT0FBTztTQUNQLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUF3QixFQUFFLGdCQUFxQztRQUN4RixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sRUFBRSxDQUFDO1NBQ1Y7UUFDRCxNQUFNLFVBQVUsR0FBYSxLQUFLO2FBQ2hDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ2pFLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQzthQUN4QyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUM5RCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsVUFBVSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQztZQUN2RSxPQUFPLEVBQUUsQ0FBQztTQUNWO1FBQ0QsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sZUFBZSxHQUFHLEtBQUs7YUFDM0IsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7YUFDcEYsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QiwyRkFBMkY7UUFDM0YsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4RCxZQUFZLEdBQUcsR0FBRyxlQUFlLENBQUMsTUFBTSxRQUFRLENBQUM7U0FDakQ7YUFBTTtZQUNOLFlBQVksR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxTQUFTLGNBQWMsWUFBWSxFQUFFLENBQUM7UUFDM0QsT0FBTyxPQUFPLENBQUM7SUFDaEIsQ0FBQztJQUVTLFdBQVc7UUFDcEIsT0FBTyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXAgfSBmcm9tICdpbW11dGFibGUnO1xyXG5pbXBvcnQgeyBBY3Rpb25IZWxwZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY3Rpb24vYWN0aW9uLWhlbHBlcic7XHJcbmltcG9ydCB7IEFsbENhcmRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FsbC1jYXJkcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vZ2FtZS9lbnRpdHknO1xyXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XHJcblxyXG5leHBvcnQgY2xhc3MgTXVsbGlnYW5DYXJkQWN0aW9uIGV4dGVuZHMgQWN0aW9uIHtcclxuXHRyZWFkb25seSBwbGF5ZXJNdWxsaWdhbjogcmVhZG9ubHkgbnVtYmVyW107XHJcblx0cmVhZG9ubHkgb3Bwb25lbnRNdWxsaWdhbjogcmVhZG9ubHkgbnVtYmVyW107XHJcblxyXG5cdGNvbnN0cnVjdG9yKGFsbENhcmRzOiBBbGxDYXJkc1NlcnZpY2UpIHtcclxuXHRcdHN1cGVyKGFsbENhcmRzKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlKG5ld0FjdGlvbiwgYWxsQ2FyZHM6IEFsbENhcmRzU2VydmljZSk6IE11bGxpZ2FuQ2FyZEFjdGlvbiB7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgTXVsbGlnYW5DYXJkQWN0aW9uKGFsbENhcmRzKSwgbmV3QWN0aW9uKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyB1cGRhdGUoZW50aXRpZXM6IE1hcDxudW1iZXIsIEVudGl0eT4pOiBNdWxsaWdhbkNhcmRBY3Rpb24ge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IE11bGxpZ2FuQ2FyZEFjdGlvbih0aGlzLmFsbENhcmRzKSwgdGhpcywge1xyXG5cdFx0XHRlbnRpdGllcyxcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGVucmljaFdpdGhUZXh0KGFsbEVudGl0aWVzU29GYXI6IE1hcDxudW1iZXIsIEVudGl0eT4pOiBNdWxsaWdhbkNhcmRBY3Rpb24ge1xyXG5cdFx0Y29uc3QgdGV4dFJhdyA9XHJcblx0XHRcdHRoaXMuYnVpbGRNdWxsaWdhblRleHQodGhpcy5wbGF5ZXJNdWxsaWdhbiwgYWxsRW50aXRpZXNTb0ZhcikgK1xyXG5cdFx0XHQnXFxuJyArXHJcblx0XHRcdHRoaXMuYnVpbGRNdWxsaWdhblRleHQodGhpcy5vcHBvbmVudE11bGxpZ2FuLCBhbGxFbnRpdGllc1NvRmFyKTtcclxuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBNdWxsaWdhbkNhcmRBY3Rpb24odGhpcy5hbGxDYXJkcyksIHRoaXMsIHtcclxuXHRcdFx0dGV4dFJhdyxcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBidWlsZE11bGxpZ2FuVGV4dChjYXJkczogcmVhZG9ubHkgbnVtYmVyW10sIGFsbEVudGl0aWVzU29GYXI6IE1hcDxudW1iZXIsIEVudGl0eT4pOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFjYXJkcyB8fCBjYXJkcy5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0cmV0dXJuICcnO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3Qgb3duZXJOYW1lczogc3RyaW5nW10gPSBjYXJkc1xyXG5cdFx0XHQubWFwKChlbnRpdHlJZCkgPT4gQWN0aW9uSGVscGVyLmdldE93bmVyKHRoaXMuZW50aXRpZXMsIGVudGl0eUlkKSlcclxuXHRcdFx0Lm1hcCgocGxheWVyRW50aXR5KSA9PiBwbGF5ZXJFbnRpdHkubmFtZSlcclxuXHRcdFx0LmZpbHRlcigobmFtZSwgaW5kZXgsIHNlbGYpID0+IHNlbGYuaW5kZXhPZihuYW1lKSA9PT0gaW5kZXgpO1xyXG5cdFx0aWYgKG93bmVyTmFtZXMubGVuZ3RoICE9PSAxKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignSW52YWxpZCBncm91cGluZyBvZiBjYXJkcyAnICsgb3duZXJOYW1lcyArICcsICcgKyBjYXJkcyk7XHJcblx0XHRcdHJldHVybiAnJztcclxuXHRcdH1cclxuXHRcdGNvbnN0IG93bmVyTmFtZSA9IG93bmVyTmFtZXNbMF07XHJcblx0XHRjb25zdCBtdWxsaWdhbmVkQ2FyZHMgPSBjYXJkc1xyXG5cdFx0XHQubWFwKChlbnRpdHlJZCkgPT4gQWN0aW9uSGVscGVyLmdldENhcmRJZCh0aGlzLmVudGl0aWVzLCBlbnRpdHlJZCwgYWxsRW50aXRpZXNTb0ZhcikpXHJcblx0XHRcdC5tYXAoKGNhcmRJZCkgPT4gdGhpcy5hbGxDYXJkcy5nZXRDYXJkKGNhcmRJZCkpO1xyXG5cdFx0bGV0IG11bGxpZ2FuSW5mbyA9ICcnO1xyXG5cdFx0Ly8gV2UgZG9uJ3QgaGF2ZSB0aGUgbXVsbGlnYW4gaW5mbywgc28gd2UganVzdCBkaXNwbGF5IHRoZSBhbW91bnQgb2YgY2FyZHMgYmVpbmcgbXVsbGlnYW5lZFxyXG5cdFx0aWYgKG11bGxpZ2FuZWRDYXJkcy5zb21lKChjYXJkKSA9PiAhY2FyZCB8fCAhY2FyZC5uYW1lKSkge1xyXG5cdFx0XHRtdWxsaWdhbkluZm8gPSBgJHttdWxsaWdhbmVkQ2FyZHMubGVuZ3RofSBjYXJkc2A7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRtdWxsaWdhbkluZm8gPSBtdWxsaWdhbmVkQ2FyZHMubWFwKChjYXJkKSA9PiBjYXJkLm5hbWUpLmpvaW4oJywgJyk7XHJcblx0XHR9XHJcblx0XHRjb25zdCB0ZXh0UmF3ID0gYFxcdCR7b3duZXJOYW1lfSBtdWxsaWdhbnMgJHttdWxsaWdhbkluZm99YDtcclxuXHRcdHJldHVybiB0ZXh0UmF3O1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIGdldEluc3RhbmNlKCk6IEFjdGlvbiB7XHJcblx0XHRyZXR1cm4gbmV3IE11bGxpZ2FuQ2FyZEFjdGlvbih0aGlzLmFsbENhcmRzKTtcclxuXHR9XHJcbn1cclxuIl19