@firestone-hs/replay-parser
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.9.
51 lines • 8.79 kB
JavaScript
import uniq from 'lodash-es/uniq';
import { ActionHelper } from '../../services/action/action-helper';
import { Action } from './action';
export class CardDiscardAction extends Action {
constructor(allCards) {
super(allCards);
}
static create(newAction, allCards) {
return Object.assign(new CardDiscardAction(allCards), newAction);
}
update(entities) {
return Object.assign(this.getInstance(), this, { entities });
}
enrichWithText(allEntitiesSoFar) {
const playerEntity = this.data.map(entityId => ActionHelper.getOwner(this.entities, entityId));
if (!playerEntity || playerEntity.length === 0) {
console.warn('[discard-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('[discard-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('[discard-action] Invalid grouping of cards ' + ownerNames + ', ' + this.data);
return this;
}
const ownerName = ownerNames[0];
const discardedCards = this.data
.map(entityId => ActionHelper.getCardId(this.entities, entityId, allEntitiesSoFar))
.map(cardId => this.allCards.getCard(cardId));
let discardInfo = '';
if (discardedCards.some(card => !card || !card.name)) {
discardInfo = `${discardedCards.length} cards`;
}
else {
discardInfo = discardedCards.map(card => card.name).join(', ');
}
const textRaw = `\t${ownerName} discards ` + discardInfo;
return Object.assign(this.getInstance(), this, { textRaw });
}
getInstance() {
return new CardDiscardAction(this.allCards);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1kaXNjYXJkLWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcGxheS1wYXJzZXIvc3JjL2xpYi9tb2RlbHMvYWN0aW9uL2NhcmQtZGlzY2FyZC1hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBR25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLE1BQU07SUFJNUMsWUFBWSxRQUF5QjtRQUNwQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFFBQXlCO1FBQ3hELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBNkI7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxjQUFjLENBQUMsZ0JBQXFDO1FBQzFELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDL0YsSUFBSSxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RSxPQUFPLElBQUksQ0FBQztTQUNaO1FBQ0QsTUFBTSxVQUFVLEdBQWEsSUFBSSxDQUNoQyxJQUFJLENBQUMsSUFBSTthQUNQLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUMvRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNaLE9BQU8sQ0FBQyxJQUFJLENBQ1gsbUNBQW1DLEVBQ25DLE1BQU0sRUFDTixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQzNDLENBQUM7Z0JBQ0YsT0FBTyxFQUFFLENBQUM7YUFDVjtZQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxHQUFHLFVBQVUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVGLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUk7YUFDOUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ2xGLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDL0MsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JELFdBQVcsR0FBRyxHQUFHLGNBQWMsQ0FBQyxNQUFNLFFBQVEsQ0FBQztTQUMvQzthQUFNO1lBQ04sV0FBVyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9EO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxTQUFTLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDekQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFUyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFwIH0gZnJvbSAnaW1tdXRhYmxlJztcclxuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLWVzL3VuaXEnO1xyXG5pbXBvcnQgeyBBY3Rpb25IZWxwZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY3Rpb24vYWN0aW9uLWhlbHBlcic7XHJcbmltcG9ydCB7IEFsbENhcmRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FsbC1jYXJkcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vZ2FtZS9lbnRpdHknO1xyXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FyZERpc2NhcmRBY3Rpb24gZXh0ZW5kcyBBY3Rpb24ge1xyXG5cdHJlYWRvbmx5IGRhdGE6IHJlYWRvbmx5IG51bWJlcltdO1xyXG5cdHJlYWRvbmx5IGNvbnRyb2xsZXI6IG51bWJlcjtcclxuXHJcblx0Y29uc3RydWN0b3IoYWxsQ2FyZHM6IEFsbENhcmRzU2VydmljZSkge1xyXG5cdFx0c3VwZXIoYWxsQ2FyZHMpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHN0YXRpYyBjcmVhdGUobmV3QWN0aW9uLCBhbGxDYXJkczogQWxsQ2FyZHNTZXJ2aWNlKTogQ2FyZERpc2NhcmRBY3Rpb24ge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IENhcmREaXNjYXJkQWN0aW9uKGFsbENhcmRzKSwgbmV3QWN0aW9uKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyB1cGRhdGUoZW50aXRpZXM6IE1hcDxudW1iZXIsIEVudGl0eT4pOiBDYXJkRGlzY2FyZEFjdGlvbiB7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLmdldEluc3RhbmNlKCksIHRoaXMsIHsgZW50aXRpZXMgfSk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZW5yaWNoV2l0aFRleHQoYWxsRW50aXRpZXNTb0ZhcjogTWFwPG51bWJlciwgRW50aXR5Pik6IENhcmREaXNjYXJkQWN0aW9uIHtcclxuXHRcdGNvbnN0IHBsYXllckVudGl0eSA9IHRoaXMuZGF0YS5tYXAoZW50aXR5SWQgPT4gQWN0aW9uSGVscGVyLmdldE93bmVyKHRoaXMuZW50aXRpZXMsIGVudGl0eUlkKSk7XHJcblx0XHRpZiAoIXBsYXllckVudGl0eSB8fCBwbGF5ZXJFbnRpdHkubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignW2Rpc2NhcmQtYWN0aW9uXSBjb3VsZCBub3QgZmluZCBwbGF5ZXIgb3duZXInLCB0aGlzLmRhdGEpO1xyXG5cdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdH1cclxuXHRcdGNvbnN0IG93bmVyTmFtZXM6IHN0cmluZ1tdID0gdW5pcShcclxuXHRcdFx0dGhpcy5kYXRhXHJcblx0XHRcdFx0Lm1hcChlbnRpdHlJZCA9PiBBY3Rpb25IZWxwZXIuZ2V0T3duZXIodGhpcy5lbnRpdGllcywgZW50aXR5SWQpKVxyXG5cdFx0XHRcdC5tYXAoZW50aXR5ID0+IHtcclxuXHRcdFx0XHRcdGlmICghZW50aXR5KSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUud2FybihcclxuXHRcdFx0XHRcdFx0XHQnW2Rpc2NhcmQtYWN0aW9uXSBubyBwbGF5ZXIgZW50aXR5JyxcclxuXHRcdFx0XHRcdFx0XHRlbnRpdHksXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5kYXRhLFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZW50aXRpZXMuZ2V0KHRoaXMuZGF0YVswXSkudGFncy50b0pTKCksXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdHJldHVybiAnJztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJldHVybiBlbnRpdHkubmFtZTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0XHRpZiAob3duZXJOYW1lcy5sZW5ndGggIT09IDEpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCdbZGlzY2FyZC1hY3Rpb25dIEludmFsaWQgZ3JvdXBpbmcgb2YgY2FyZHMgJyArIG93bmVyTmFtZXMgKyAnLCAnICsgdGhpcy5kYXRhKTtcclxuXHRcdFx0cmV0dXJuIHRoaXM7XHJcblx0XHR9XHJcblx0XHRjb25zdCBvd25lck5hbWUgPSBvd25lck5hbWVzWzBdO1xyXG5cdFx0Y29uc3QgZGlzY2FyZGVkQ2FyZHMgPSB0aGlzLmRhdGFcclxuXHRcdFx0Lm1hcChlbnRpdHlJZCA9PiBBY3Rpb25IZWxwZXIuZ2V0Q2FyZElkKHRoaXMuZW50aXRpZXMsIGVudGl0eUlkLCBhbGxFbnRpdGllc1NvRmFyKSlcclxuXHRcdFx0Lm1hcChjYXJkSWQgPT4gdGhpcy5hbGxDYXJkcy5nZXRDYXJkKGNhcmRJZCkpO1xyXG5cdFx0bGV0IGRpc2NhcmRJbmZvID0gJyc7XHJcblx0XHRpZiAoZGlzY2FyZGVkQ2FyZHMuc29tZShjYXJkID0+ICFjYXJkIHx8ICFjYXJkLm5hbWUpKSB7XHJcblx0XHRcdGRpc2NhcmRJbmZvID0gYCR7ZGlzY2FyZGVkQ2FyZHMubGVuZ3RofSBjYXJkc2A7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRkaXNjYXJkSW5mbyA9IGRpc2NhcmRlZENhcmRzLm1hcChjYXJkID0+IGNhcmQubmFtZSkuam9pbignLCAnKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCB0ZXh0UmF3ID0gYFxcdCR7b3duZXJOYW1lfSBkaXNjYXJkcyBgICsgZGlzY2FyZEluZm87XHJcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLmdldEluc3RhbmNlKCksIHRoaXMsIHsgdGV4dFJhdyB9KTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBnZXRJbnN0YW5jZSgpOiBBY3Rpb24ge1xyXG5cdFx0cmV0dXJuIG5ldyBDYXJkRGlzY2FyZEFjdGlvbih0aGlzLmFsbENhcmRzKTtcclxuXHR9XHJcbn1cclxuIl19