UNPKG

@firestone-hs/replay-parser

Version:

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

56 lines 9.13 kB
import uniq from 'lodash-es/uniq'; import { ActionHelper } from '../../services/action/action-helper'; import { Action } from './action'; export class CardDrawAction extends Action { constructor(allCards) { super(allCards); } static create(newAction, allCards) { return Object.assign(new CardDrawAction(allCards), newAction); } update(entities) { return Object.assign(new CardDrawAction(this.allCards), this, { entities, }); } enrichWithText(allEntitiesSoFar) { const playerEntity = this.data.map(entityId => ActionHelper.getOwner(this.entities, entityId)); if (!playerEntity || playerEntity.length === 0) { console.warn('[card-draw-action] could not find player owner', this.data); return this; } const ownerNames = uniq(this.data .map(entityId => ActionHelper.getOwner(this.entities, entityId)) .map(entity => { if (!entity) { console.warn('[card-draw-action] no player entity', entity, this.data, this.entities.get(this.data[0]).tags.toJS()); return ''; } return entity.name; })); if (ownerNames.length !== 1) { console.warn('[card-draw-action] Invalid grouping of cards ' + ownerNames + ', ' + this.data); return this; } const ownerName = ownerNames[0]; const drawnCards = this.data .map(entityId => ActionHelper.getCardId(this.entities, entityId, allEntitiesSoFar)) .map(cardId => this.allCards.getCard(cardId)); let drawInfo = ''; // We don't have the mulligan info, so we just display the amount of cards being mulliganed if (drawnCards.some(card => !card || !card.name)) { drawInfo = `${drawnCards.length} cards`; } else { drawInfo = drawnCards.map(card => card.name).join(', '); } const textRaw = `\t${ownerName} draws ` + drawInfo; return Object.assign(new CardDrawAction(this.allCards), this, { textRaw, }); } getInstance() { return new CardDrawAction(this.allCards); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1kcmF3LWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcGxheS1wYXJzZXIvc3JjL2xpYi9tb2RlbHMvYWN0aW9uL2NhcmQtZHJhdy1hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBR25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsTUFBTSxPQUFPLGNBQWUsU0FBUSxNQUFNO0lBSXpDLFlBQVksUUFBeUI7UUFDcEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUF5QjtRQUN4RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxRQUE2QjtRQUMxQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRTtZQUM3RCxRQUFRO1NBQ1IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWMsQ0FBQyxnQkFBcUM7UUFDMUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFFLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxNQUFNLFVBQVUsR0FBYSxJQUFJLENBQ2hDLElBQUksQ0FBQyxJQUFJO2FBQ1AsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQy9ELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FDWCxxQ0FBcUMsRUFDckMsTUFBTSxFQUNOLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FDM0MsQ0FBQztnQkFDRixPQUFPLEVBQUUsQ0FBQzthQUNWO1lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0NBQStDLEdBQUcsVUFBVSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUYsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUNELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSTthQUMxQixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7YUFDbEYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEIsMkZBQTJGO1FBQzNGLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pELFFBQVEsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLFFBQVEsQ0FBQztTQUN4QzthQUFNO1lBQ04sUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxTQUFTLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDbkQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUU7WUFDN0QsT0FBTztTQUNQLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFUyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hcCB9IGZyb20gJ2ltbXV0YWJsZSc7XHJcbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC1lcy91bmlxJztcclxuaW1wb3J0IHsgQWN0aW9uSGVscGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWN0aW9uL2FjdGlvbi1oZWxwZXInO1xyXG5pbXBvcnQgeyBBbGxDYXJkc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbGwtY2FyZHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uL2dhbWUvZW50aXR5JztcclxuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xyXG5cclxuZXhwb3J0IGNsYXNzIENhcmREcmF3QWN0aW9uIGV4dGVuZHMgQWN0aW9uIHtcclxuXHRyZWFkb25seSBkYXRhOiByZWFkb25seSBudW1iZXJbXTtcclxuXHRyZWFkb25seSBjb250cm9sbGVyOiBudW1iZXI7XHJcblxyXG5cdGNvbnN0cnVjdG9yKGFsbENhcmRzOiBBbGxDYXJkc1NlcnZpY2UpIHtcclxuXHRcdHN1cGVyKGFsbENhcmRzKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlKG5ld0FjdGlvbiwgYWxsQ2FyZHM6IEFsbENhcmRzU2VydmljZSk6IENhcmREcmF3QWN0aW9uIHtcclxuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBDYXJkRHJhd0FjdGlvbihhbGxDYXJkcyksIG5ld0FjdGlvbik7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgdXBkYXRlKGVudGl0aWVzOiBNYXA8bnVtYmVyLCBFbnRpdHk+KTogQ2FyZERyYXdBY3Rpb24ge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IENhcmREcmF3QWN0aW9uKHRoaXMuYWxsQ2FyZHMpLCB0aGlzLCB7XHJcblx0XHRcdGVudGl0aWVzLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZW5yaWNoV2l0aFRleHQoYWxsRW50aXRpZXNTb0ZhcjogTWFwPG51bWJlciwgRW50aXR5Pik6IENhcmREcmF3QWN0aW9uIHtcclxuXHRcdGNvbnN0IHBsYXllckVudGl0eSA9IHRoaXMuZGF0YS5tYXAoZW50aXR5SWQgPT4gQWN0aW9uSGVscGVyLmdldE93bmVyKHRoaXMuZW50aXRpZXMsIGVudGl0eUlkKSk7XHJcblx0XHRpZiAoIXBsYXllckVudGl0eSB8fCBwbGF5ZXJFbnRpdHkubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignW2NhcmQtZHJhdy1hY3Rpb25dIGNvdWxkIG5vdCBmaW5kIHBsYXllciBvd25lcicsIHRoaXMuZGF0YSk7XHJcblx0XHRcdHJldHVybiB0aGlzO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3Qgb3duZXJOYW1lczogc3RyaW5nW10gPSB1bmlxKFxyXG5cdFx0XHR0aGlzLmRhdGFcclxuXHRcdFx0XHQubWFwKGVudGl0eUlkID0+IEFjdGlvbkhlbHBlci5nZXRPd25lcih0aGlzLmVudGl0aWVzLCBlbnRpdHlJZCkpXHJcblx0XHRcdFx0Lm1hcChlbnRpdHkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKCFlbnRpdHkpIHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS53YXJuKFxyXG5cdFx0XHRcdFx0XHRcdCdbY2FyZC1kcmF3LWFjdGlvbl0gbm8gcGxheWVyIGVudGl0eScsXHJcblx0XHRcdFx0XHRcdFx0ZW50aXR5LFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZGF0YSxcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmVudGl0aWVzLmdldCh0aGlzLmRhdGFbMF0pLnRhZ3MudG9KUygpLFxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gJyc7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gZW50aXR5Lm5hbWU7XHJcblx0XHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdFx0aWYgKG93bmVyTmFtZXMubGVuZ3RoICE9PSAxKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignW2NhcmQtZHJhdy1hY3Rpb25dIEludmFsaWQgZ3JvdXBpbmcgb2YgY2FyZHMgJyArIG93bmVyTmFtZXMgKyAnLCAnICsgdGhpcy5kYXRhKTtcclxuXHRcdFx0cmV0dXJuIHRoaXM7XHJcblx0XHR9XHJcblx0XHRjb25zdCBvd25lck5hbWUgPSBvd25lck5hbWVzWzBdO1xyXG5cdFx0Y29uc3QgZHJhd25DYXJkcyA9IHRoaXMuZGF0YVxyXG5cdFx0XHQubWFwKGVudGl0eUlkID0+IEFjdGlvbkhlbHBlci5nZXRDYXJkSWQodGhpcy5lbnRpdGllcywgZW50aXR5SWQsIGFsbEVudGl0aWVzU29GYXIpKVxyXG5cdFx0XHQubWFwKGNhcmRJZCA9PiB0aGlzLmFsbENhcmRzLmdldENhcmQoY2FyZElkKSk7XHJcblx0XHRsZXQgZHJhd0luZm8gPSAnJztcclxuXHRcdC8vIFdlIGRvbid0IGhhdmUgdGhlIG11bGxpZ2FuIGluZm8sIHNvIHdlIGp1c3QgZGlzcGxheSB0aGUgYW1vdW50IG9mIGNhcmRzIGJlaW5nIG11bGxpZ2FuZWRcclxuXHRcdGlmIChkcmF3bkNhcmRzLnNvbWUoY2FyZCA9PiAhY2FyZCB8fCAhY2FyZC5uYW1lKSkge1xyXG5cdFx0XHRkcmF3SW5mbyA9IGAke2RyYXduQ2FyZHMubGVuZ3RofSBjYXJkc2A7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRkcmF3SW5mbyA9IGRyYXduQ2FyZHMubWFwKGNhcmQgPT4gY2FyZC5uYW1lKS5qb2luKCcsICcpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHRleHRSYXcgPSBgXFx0JHtvd25lck5hbWV9IGRyYXdzIGAgKyBkcmF3SW5mbztcclxuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBDYXJkRHJhd0FjdGlvbih0aGlzLmFsbENhcmRzKSwgdGhpcywge1xyXG5cdFx0XHR0ZXh0UmF3LFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgZ2V0SW5zdGFuY2UoKTogQWN0aW9uIHtcclxuXHRcdHJldHVybiBuZXcgQ2FyZERyYXdBY3Rpb24odGhpcy5hbGxDYXJkcyk7XHJcblx0fVxyXG59XHJcbiJdfQ==