UNPKG

@firestone-hs/replay-parser

Version:

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

73 lines 10.2 kB
import { GameTag } from '@firestone-hs/reference-data'; export class Entity { constructor() { this.tags = {}; } static create(base, newAttributes) { // Merge tags const newTags = newAttributes && newAttributes.tags ? newAttributes.tags : {}; const tags = base.tags ? { ...base.tags, ...newTags } : newTags; const newEntity = Object.assign(new Entity(), base, newAttributes, { tags }); return newEntity; } static default(card) { let tags = {}; for (const strTag of card?.mechanics ?? []) { const tag = GameTag[strTag]; if (tag) { tags[strTag] = 1; } } return Entity.create({ cardID: card.id, tags: tags, }); } getCardType() { return this.getTag(GameTag.CARDTYPE); } getZone() { return this.getTag(GameTag.ZONE); } getTag(tag) { return !this.tags ? -1 : this.tags[GameTag[tag]]; } isRevealed() { // There are many tags that are set only when ShowEntity triggers. This is only // one of the possible choices const revealed = (this.getTag(GameTag.COST) && this.getTag(GameTag.COST) !== -1) || // For some reasons it happens that the cost is not always set? (this.getTag(GameTag.CARDTYPE) && this.getTag(GameTag.CARDTYPE) !== -1); // // console.log('revealed', revealed, this.id, this.cardID, this.tags.toJS()); return revealed; } zone() { return this.getTag(GameTag.ZONE); } updateDamage(damage) { const base = this; return Object.assign(new Entity(), this, { damageForThisAction: damage }); } update(definition) { const newAttributes = {}; if (definition.cardID) { newAttributes.cardID = definition.cardID; } if (definition.name) { newAttributes.name = definition.name; } if (definition.tags) { newAttributes.tags = definition.tags; if (newAttributes.tags.PLAYSTATE === 8) { newAttributes.tags.CONCEDED = 1; } } return Entity.create(this, newAttributes); } updateTag(tag, value) { const newTags = { ...this.tags, [GameTag[tag]]: value }; const base = this; return Object.assign(new Entity(), base, { tags: newTags }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwbGF5LXBhcnNlci9zcmMvbGliL21vZGVscy9nYW1lL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFpQixNQUFNLDhCQUE4QixDQUFDO0FBR3RFLE1BQU0sT0FBTyxNQUFNO0lBQ2xCO1FBS1MsU0FBSSxHQUFrQyxFQUFFLENBQUM7SUFMbkMsQ0FBQztJQU9ULE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWSxFQUFFLGFBQWdDO1FBQ2xFLGFBQWE7UUFDYixNQUFNLE9BQU8sR0FBa0MsYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RyxNQUFNLElBQUksR0FBa0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQy9GLE1BQU0sU0FBUyxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRixPQUFPLFNBQVMsQ0FBQztJQUNsQixDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFtQjtRQUN4QyxJQUFJLElBQUksR0FBa0MsRUFBRSxDQUFDO1FBQzdDLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLFNBQVMsSUFBSSxFQUFFLEVBQUU7WUFDM0MsTUFBTSxHQUFHLEdBQVksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLElBQUksR0FBRyxFQUFFO2dCQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENB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ZCB9IGZyb20gJ0BmaXJlc3RvbmUtaHMvcmVmZXJlbmNlLWRhdGEnO1xyXG5pbXBvcnQgeyBFbnRpdHlEZWZpbml0aW9uIH0gZnJvbSAnLi4vcGFyc2VyL2VudGl0eS1kZWZpbml0aW9uJztcclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHkge1xyXG5cdGNvbnN0cnVjdG9yKCkge31cclxuXHJcblx0cmVhZG9ubHkgaWQ6IG51bWJlcjtcclxuXHRyZWFkb25seSBjYXJkSUQ6IHN0cmluZztcclxuXHRyZWFkb25seSBkYW1hZ2VGb3JUaGlzQWN0aW9uOiBudW1iZXI7XHJcblx0cmVhZG9ubHkgdGFnczogeyBbdGFnTmFtZTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcclxuXHJcblx0cHVibGljIHN0YXRpYyBjcmVhdGUoYmFzZTogRW50aXR5LCBuZXdBdHRyaWJ1dGVzPzogRW50aXR5RGVmaW5pdGlvbik6IEVudGl0eSB7XHJcblx0XHQvLyBNZXJnZSB0YWdzXHJcblx0XHRjb25zdCBuZXdUYWdzOiB7IFt0YWdOYW1lOiBzdHJpbmddOiBudW1iZXIgfSA9IG5ld0F0dHJpYnV0ZXMgJiYgbmV3QXR0cmlidXRlcy50YWdzID8gbmV3QXR0cmlidXRlcy50YWdzIDoge307XHJcblx0XHRjb25zdCB0YWdzOiB7IFt0YWdOYW1lOiBzdHJpbmddOiBudW1iZXIgfSA9IGJhc2UudGFncyA/IHsgLi4uYmFzZS50YWdzLCAuLi5uZXdUYWdzIH0gOiBuZXdUYWdzO1xyXG5cdFx0Y29uc3QgbmV3RW50aXR5OiBFbnRpdHkgPSBPYmplY3QuYXNzaWduKG5ldyBFbnRpdHkoKSwgYmFzZSwgbmV3QXR0cmlidXRlcywgeyB0YWdzIH0pO1xyXG5cdFx0cmV0dXJuIG5ld0VudGl0eTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBzdGF0aWMgZGVmYXVsdChjYXJkOiBSZWZlcmVuY2VDYXJkKTogRW50aXR5IHtcclxuXHRcdGxldCB0YWdzOiB7IFt0YWdOYW1lOiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xyXG5cdFx0Zm9yIChjb25zdCBzdHJUYWcgb2YgY2FyZD8ubWVjaGFuaWNzID8/IFtdKSB7XHJcblx0XHRcdGNvbnN0IHRhZzogR2FtZVRhZyA9IEdhbWVUYWdbc3RyVGFnXTtcclxuXHRcdFx0aWYgKHRhZykge1xyXG5cdFx0XHRcdHRhZ3Nbc3RyVGFnXSA9IDE7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBFbnRpdHkuY3JlYXRlKHtcclxuXHRcdFx0Y2FyZElEOiBjYXJkLmlkLFxyXG5cdFx0XHR0YWdzOiB0YWdzLFxyXG5cdFx0fSBhcyBFbnRpdHkpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGdldENhcmRUeXBlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZ2V0VGFnKEdhbWVUYWcuQ0FSRFRZUEUpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGdldFpvbmUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5nZXRUYWcoR2FtZVRhZy5aT05FKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnZXRUYWcodGFnOiBHYW1lVGFnKTogbnVtYmVyIHtcclxuXHRcdHJldHVybiAhdGhpcy50YWdzID8gLTEgOiB0aGlzLnRhZ3NbR2FtZVRhZ1t0YWddXTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBpc1JldmVhbGVkKCk6IGJvb2xlYW4ge1xyXG5cdFx0Ly8gVGhlcmUgYXJlIG1hbnkgdGFncyB0aGF0IGFyZSBzZXQgb25seSB3aGVuIFNob3dFbnRpdHkgdHJpZ2dlcnMuIFRoaXMgaXMgb25seVxyXG5cdFx0Ly8gb25lIG9mIHRoZSBwb3NzaWJsZSBjaG9pY2VzXHJcblx0XHRjb25zdCByZXZlYWxlZCA9XHJcblx0XHRcdCh0aGlzLmdldFRhZyhHYW1lVGFnLkNPU1QpICYmIHRoaXMuZ2V0VGFnKEdhbWVUYWcuQ09TVCkgIT09IC0xKSB8fFxyXG5cdFx0XHQvLyBGb3Igc29tZSByZWFzb25zIGl0IGhhcHBlbnMgdGhhdCB0aGUgY29zdCBpcyBub3QgYWx3YXlzIHNldD9cclxuXHRcdFx0KHRoaXMuZ2V0VGFnKEdhbWVUYWcuQ0FSRFRZUEUpICYmIHRoaXMuZ2V0VGFnKEdhbWVUYWcuQ0FSRFRZUEUpICE9PSAtMSk7XHJcblx0XHQvLyAvLyBjb25zb2xlLmxvZygncmV2ZWFsZWQnLCByZXZlYWxlZCwgdGhpcy5pZCwgdGhpcy5jYXJkSUQsIHRoaXMudGFncy50b0pTKCkpO1xyXG5cdFx0cmV0dXJuIHJldmVhbGVkO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHpvbmUoKTogbnVtYmVyIHtcclxuXHRcdHJldHVybiB0aGlzLmdldFRhZyhHYW1lVGFnLlpPTkUpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHVwZGF0ZURhbWFnZShkYW1hZ2U6IG51bWJlcik6IEVudGl0eSB7XHJcblx0XHRjb25zdCBiYXNlOiBFbnRpdHkgPSB0aGlzO1xyXG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IEVudGl0eSgpLCB0aGlzLCB7IGRhbWFnZUZvclRoaXNBY3Rpb246IGRhbWFnZSB9KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyB1cGRhdGUoZGVmaW5pdGlvbjogRW50aXR5RGVmaW5pdGlvbik6IEVudGl0eSB7XHJcblx0XHRjb25zdCBuZXdBdHRyaWJ1dGVzOiBhbnkgPSB7fTtcclxuXHRcdGlmIChkZWZpbml0aW9uLmNhcmRJRCkge1xyXG5cdFx0XHRuZXdBdHRyaWJ1dGVzLmNhcmRJRCA9IGRlZmluaXRpb24uY2FyZElEO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGRlZmluaXRpb24ubmFtZSkge1xyXG5cdFx0XHRuZXdBdHRyaWJ1dGVzLm5hbWUgPSBkZWZpbml0aW9uLm5hbWU7XHJcblx0XHR9XHJcblx0XHRpZiAoZGVmaW5pdGlvbi50YWdzKSB7XHJcblx0XHRcdG5ld0F0dHJpYnV0ZXMudGFncyA9IGRlZmluaXRpb24udGFncztcclxuXHRcdFx0aWYgKG5ld0F0dHJpYnV0ZXMudGFncy5QTEFZU1RBVEUgPT09IDgpIHtcclxuXHRcdFx0XHRuZXdBdHRyaWJ1dGVzLnRhZ3MuQ09OQ0VERUQgPSAxO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gRW50aXR5LmNyZWF0ZSh0aGlzLCBuZXdBdHRyaWJ1dGVzKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyB1cGRhdGVUYWcodGFnOiBHYW1lVGFnLCB2YWx1ZTogbnVtYmVyKTogRW50aXR5IHtcclxuXHRcdGNvbnN0IG5ld1RhZ3M6IHsgW3RhZ05hbWU6IHN0cmluZ106IG51bWJlciB9ID0geyAuLi50aGlzLnRhZ3MsIFtHYW1lVGFnW3RhZ11dOiB2YWx1ZSB9O1xyXG5cdFx0Y29uc3QgYmFzZTogRW50aXR5ID0gdGhpcztcclxuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFbnRpdHkoKSwgYmFzZSwgeyB0YWdzOiBuZXdUYWdzIH0pO1xyXG5cdH1cclxufVxyXG4iXX0=