UNPKG

@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.91 kB
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 = 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); return ''; } return entity.name; }) .filter((name, index, self) => self.indexOf(name) === index); 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1kaXNjYXJkLWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcGxheS1wYXJzZXIvc3JjL2xpYi9tb2RlbHMvYWN0aW9uL2NhcmQtZGlzY2FyZC1hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBR25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLE1BQU07SUFJNUMsWUFBWSxRQUF5QjtRQUNwQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFFBQXlCO1FBQ3hELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBNkI7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxjQUFjLENBQUMsZ0JBQXFDO1FBQzFELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsOENBQThDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxNQUFNLFVBQVUsR0FBYSxJQUFJLENBQUMsSUFBSTthQUNwQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUNqRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FDWCxtQ0FBbUMsRUFDbkMsTUFBTSxFQUNOLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDcEMsQ0FBQztnQkFDRixPQUFPLEVBQUUsQ0FBQzthQUNWO1lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3BCLENBQUMsQ0FBQzthQUNELE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQzlELElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsR0FBRyxVQUFVLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1RixPQUFPLElBQUksQ0FBQztTQUNaO1FBQ0QsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJO2FBQzlCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ3BGLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2RCxXQUFXLEdBQUcsR0FBRyxjQUFjLENBQUMsTUFBTSxRQUFRLENBQUM7U0FDL0M7YUFBTTtZQUNOLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxTQUFTLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDekQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFUyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFwIH0gZnJvbSAnaW1tdXRhYmxlJztcclxuaW1wb3J0IHsgQWN0aW9uSGVscGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWN0aW9uL2FjdGlvbi1oZWxwZXInO1xyXG5pbXBvcnQgeyBBbGxDYXJkc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbGwtY2FyZHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uL2dhbWUvZW50aXR5JztcclxuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xyXG5cclxuZXhwb3J0IGNsYXNzIENhcmREaXNjYXJkQWN0aW9uIGV4dGVuZHMgQWN0aW9uIHtcclxuXHRyZWFkb25seSBkYXRhOiByZWFkb25seSBudW1iZXJbXTtcclxuXHRyZWFkb25seSBjb250cm9sbGVyOiBudW1iZXI7XHJcblxyXG5cdGNvbnN0cnVjdG9yKGFsbENhcmRzOiBBbGxDYXJkc1NlcnZpY2UpIHtcclxuXHRcdHN1cGVyKGFsbENhcmRzKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBzdGF0aWMgY3JlYXRlKG5ld0FjdGlvbiwgYWxsQ2FyZHM6IEFsbENhcmRzU2VydmljZSk6IENhcmREaXNjYXJkQWN0aW9uIHtcclxuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBDYXJkRGlzY2FyZEFjdGlvbihhbGxDYXJkcyksIG5ld0FjdGlvbik7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgdXBkYXRlKGVudGl0aWVzOiBNYXA8bnVtYmVyLCBFbnRpdHk+KTogQ2FyZERpc2NhcmRBY3Rpb24ge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24odGhpcy5nZXRJbnN0YW5jZSgpLCB0aGlzLCB7IGVudGl0aWVzIH0pO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGVucmljaFdpdGhUZXh0KGFsbEVudGl0aWVzU29GYXI6IE1hcDxudW1iZXIsIEVudGl0eT4pOiBDYXJkRGlzY2FyZEFjdGlvbiB7XHJcblx0XHRjb25zdCBwbGF5ZXJFbnRpdHkgPSB0aGlzLmRhdGEubWFwKChlbnRpdHlJZCkgPT4gQWN0aW9uSGVscGVyLmdldE93bmVyKHRoaXMuZW50aXRpZXMsIGVudGl0eUlkKSk7XHJcblx0XHRpZiAoIXBsYXllckVudGl0eSB8fCBwbGF5ZXJFbnRpdHkubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignW2Rpc2NhcmQtYWN0aW9uXSBjb3VsZCBub3QgZmluZCBwbGF5ZXIgb3duZXInLCB0aGlzLmRhdGEpO1xyXG5cdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdH1cclxuXHRcdGNvbnN0IG93bmVyTmFtZXM6IHN0cmluZ1tdID0gdGhpcy5kYXRhXHJcblx0XHRcdC5tYXAoKGVudGl0eUlkKSA9PiBBY3Rpb25IZWxwZXIuZ2V0T3duZXIodGhpcy5lbnRpdGllcywgZW50aXR5SWQpKVxyXG5cdFx0XHQubWFwKChlbnRpdHkpID0+IHtcclxuXHRcdFx0XHRpZiAoIWVudGl0eSkge1xyXG5cdFx0XHRcdFx0Y29uc29sZS53YXJuKFxyXG5cdFx0XHRcdFx0XHQnW2Rpc2NhcmQtYWN0aW9uXSBubyBwbGF5ZXIgZW50aXR5JyxcclxuXHRcdFx0XHRcdFx0ZW50aXR5LFxyXG5cdFx0XHRcdFx0XHR0aGlzLmRhdGEsXHJcblx0XHRcdFx0XHRcdHRoaXMuZW50aXRpZXMuZ2V0KHRoaXMuZGF0YVswXSkudGFncyxcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRyZXR1cm4gJyc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiBlbnRpdHkubmFtZTtcclxuXHRcdFx0fSlcclxuXHRcdFx0LmZpbHRlcigobmFtZSwgaW5kZXgsIHNlbGYpID0+IHNlbGYuaW5kZXhPZihuYW1lKSA9PT0gaW5kZXgpO1xyXG5cdFx0aWYgKG93bmVyTmFtZXMubGVuZ3RoICE9PSAxKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignW2Rpc2NhcmQtYWN0aW9uXSBJbnZhbGlkIGdyb3VwaW5nIG9mIGNhcmRzICcgKyBvd25lck5hbWVzICsgJywgJyArIHRoaXMuZGF0YSk7XHJcblx0XHRcdHJldHVybiB0aGlzO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3Qgb3duZXJOYW1lID0gb3duZXJOYW1lc1swXTtcclxuXHRcdGNvbnN0IGRpc2NhcmRlZENhcmRzID0gdGhpcy5kYXRhXHJcblx0XHRcdC5tYXAoKGVudGl0eUlkKSA9PiBBY3Rpb25IZWxwZXIuZ2V0Q2FyZElkKHRoaXMuZW50aXRpZXMsIGVudGl0eUlkLCBhbGxFbnRpdGllc1NvRmFyKSlcclxuXHRcdFx0Lm1hcCgoY2FyZElkKSA9PiB0aGlzLmFsbENhcmRzLmdldENhcmQoY2FyZElkKSk7XHJcblx0XHRsZXQgZGlzY2FyZEluZm8gPSAnJztcclxuXHRcdGlmIChkaXNjYXJkZWRDYXJkcy5zb21lKChjYXJkKSA9PiAhY2FyZCB8fCAhY2FyZC5uYW1lKSkge1xyXG5cdFx0XHRkaXNjYXJkSW5mbyA9IGAke2Rpc2NhcmRlZENhcmRzLmxlbmd0aH0gY2FyZHNgO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZGlzY2FyZEluZm8gPSBkaXNjYXJkZWRDYXJkcy5tYXAoKGNhcmQpID0+IGNhcmQubmFtZSkuam9pbignLCAnKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCB0ZXh0UmF3ID0gYFxcdCR7b3duZXJOYW1lfSBkaXNjYXJkcyBgICsgZGlzY2FyZEluZm87XHJcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLmdldEluc3RhbmNlKCksIHRoaXMsIHsgdGV4dFJhdyB9KTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBnZXRJbnN0YW5jZSgpOiBBY3Rpb24ge1xyXG5cdFx0cmV0dXJuIG5ldyBDYXJkRGlzY2FyZEFjdGlvbih0aGlzLmFsbENhcmRzKTtcclxuXHR9XHJcbn1cclxuIl19