@firestone-hs/replay-parser
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.9.
47 lines • 7.34 kB
JavaScript
import { BlockType, CardType, GameTag, Zone } from '@firestone-hs/reference-data';
import { SecretPlayedFromHandAction } from '../../models/action/secret-played-from-hand-action';
import { ActionHistoryItem } from '../../models/history/action-history-item';
export class SecretPlayedFromHandParser {
constructor(allCards) {
this.allCards = allCards;
}
applies(item) {
return (item instanceof ActionHistoryItem &&
parseInt(item.node.attributes.type) === BlockType.PLAY &&
(item.node.tags && item.node.tags.length > 0));
}
parse(item, currentTurn, entitiesBeforeAction, history) {
let playedCardId = -1;
let isSecret = false;
for (const tag of item.node.tags) {
if (tag.tag === GameTag.ZONE && tag.value === Zone.SECRET) {
if (entitiesBeforeAction.get(tag.entity) &&
entitiesBeforeAction.get(tag.entity).getTag(GameTag.CARDTYPE) !== CardType.ENCHANTMENT) {
playedCardId = tag.entity;
}
}
if (tag.tag === GameTag.SECRET && tag.value === 1) {
isSecret = true;
}
}
if (!isSecret &&
entitiesBeforeAction.get(playedCardId) &&
entitiesBeforeAction.get(playedCardId).getTag(GameTag.SECRET) === 1) {
isSecret = true;
}
if (playedCardId === -1 || !isSecret) {
return;
}
return [
SecretPlayedFromHandAction.create({
timestamp: item.timestamp,
index: item.index,
entityId: playedCardId,
}, this.allCards),
];
}
reduce(actions) {
return actions;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LXBsYXllZC1mcm9tLWhhbmQtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwbGF5LXBhcnNlci9zcmMvbGliL3NlcnZpY2VzL2FjdGlvbi9zZWNyZXQtcGxheWVkLWZyb20taGFuZC1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR2xGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRWhHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBSzdFLE1BQU0sT0FBTywwQkFBMEI7SUFDdEMsWUFBb0IsUUFBeUI7UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRTFDLE9BQU8sQ0FBQyxJQUFpQjtRQUMvQixPQUFPLENBQ04sSUFBSSxZQUFZLGlCQUFpQjtZQUNqQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLElBQUk7WUFDdEQsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQzdDLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUNYLElBQXVCLEVBQ3ZCLFdBQW1CLEVBQ25CLG9CQUF5QyxFQUN6QyxPQUErQjtRQUUvQixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQzFELElBQ0Msb0JBQW9CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7b0JBQ3BDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLENBQUMsV0FBVyxFQUNyRjtvQkFDRCxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztpQkFDMUI7YUFDRDtZQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO2dCQUNsRCxRQUFRLEdBQUcsSUFBSSxDQUFDO2FBQ2hCO1NBQ0Q7UUFDRCxJQUNDLENBQUMsUUFBUTtZQUNULG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7WUFDdEMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUNsRTtZQUNELFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDaEI7UUFFRCxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNyQyxPQUFPO1NBQ1A7UUFFRCxPQUFPO1lBQ04sMEJBQTBCLENBQUMsTUFBTSxDQUNoQztnQkFDQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLFlBQVk7YUFDdEIsRUFDRCxJQUFJLENBQUMsUUFBUSxDQUNiO1NBQ0QsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsT0FBMEI7UUFDdkMsT0FBTyxPQUFPLENBQUM7SUFDaEIsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmxvY2tUeXBlLCBDYXJkVHlwZSwgR2FtZVRhZywgWm9uZSB9IGZyb20gJ0BmaXJlc3RvbmUtaHMvcmVmZXJlbmNlLWRhdGEnO1xyXG5pbXBvcnQgeyBNYXAgfSBmcm9tICdpbW11dGFibGUnO1xyXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uL2FjdGlvbic7XHJcbmltcG9ydCB7IFNlY3JldFBsYXllZEZyb21IYW5kQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbi9zZWNyZXQtcGxheWVkLWZyb20taGFuZC1hY3Rpb24nO1xyXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2FtZS9lbnRpdHknO1xyXG5pbXBvcnQgeyBBY3Rpb25IaXN0b3J5SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9oaXN0b3J5L2FjdGlvbi1oaXN0b3J5LWl0ZW0nO1xyXG5pbXBvcnQgeyBIaXN0b3J5SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9oaXN0b3J5L2hpc3RvcnktaXRlbSc7XHJcbmltcG9ydCB7IEFsbENhcmRzU2VydmljZSB9IGZyb20gJy4uL2FsbC1jYXJkcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSAnLi9wYXJzZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNlY3JldFBsYXllZEZyb21IYW5kUGFyc2VyIGltcGxlbWVudHMgUGFyc2VyIHtcclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGFsbENhcmRzOiBBbGxDYXJkc1NlcnZpY2UpIHt9XHJcblxyXG5cdHB1YmxpYyBhcHBsaWVzKGl0ZW06IEhpc3RvcnlJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRpdGVtIGluc3RhbmNlb2YgQWN0aW9uSGlzdG9yeUl0ZW0gJiZcclxuXHRcdFx0cGFyc2VJbnQoaXRlbS5ub2RlLmF0dHJpYnV0ZXMudHlwZSkgPT09IEJsb2NrVHlwZS5QTEFZICYmXHJcblx0XHRcdChpdGVtLm5vZGUudGFncyAmJiBpdGVtLm5vZGUudGFncy5sZW5ndGggPiAwKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBwYXJzZShcclxuXHRcdGl0ZW06IEFjdGlvbkhpc3RvcnlJdGVtLFxyXG5cdFx0Y3VycmVudFR1cm46IG51bWJlcixcclxuXHRcdGVudGl0aWVzQmVmb3JlQWN0aW9uOiBNYXA8bnVtYmVyLCBFbnRpdHk+LFxyXG5cdFx0aGlzdG9yeTogcmVhZG9ubHkgSGlzdG9yeUl0ZW1bXSxcclxuXHQpOiBBY3Rpb25bXSB7XHJcblx0XHRsZXQgcGxheWVkQ2FyZElkID0gLTE7XHJcblx0XHRsZXQgaXNTZWNyZXQgPSBmYWxzZTtcclxuXHRcdGZvciAoY29uc3QgdGFnIG9mIGl0ZW0ubm9kZS50YWdzKSB7XHJcblx0XHRcdGlmICh0YWcudGFnID09PSBHYW1lVGFnLlpPTkUgJiYgdGFnLnZhbHVlID09PSBab25lLlNFQ1JFVCkge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGVudGl0aWVzQmVmb3JlQWN0aW9uLmdldCh0YWcuZW50aXR5KSAmJlxyXG5cdFx0XHRcdFx0ZW50aXRpZXNCZWZvcmVBY3Rpb24uZ2V0KHRhZy5lbnRpdHkpLmdldFRhZyhHYW1lVGFnLkNBUkRUWVBFKSAhPT0gQ2FyZFR5cGUuRU5DSEFOVE1FTlRcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdHBsYXllZENhcmRJZCA9IHRhZy5lbnRpdHk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0YWcudGFnID09PSBHYW1lVGFnLlNFQ1JFVCAmJiB0YWcudmFsdWUgPT09IDEpIHtcclxuXHRcdFx0XHRpc1NlY3JldCA9IHRydWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0IWlzU2VjcmV0ICYmXHJcblx0XHRcdGVudGl0aWVzQmVmb3JlQWN0aW9uLmdldChwbGF5ZWRDYXJkSWQpICYmXHJcblx0XHRcdGVudGl0aWVzQmVmb3JlQWN0aW9uLmdldChwbGF5ZWRDYXJkSWQpLmdldFRhZyhHYW1lVGFnLlNFQ1JFVCkgPT09IDFcclxuXHRcdCkge1xyXG5cdFx0XHRpc1NlY3JldCA9IHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHBsYXllZENhcmRJZCA9PT0gLTEgfHwgIWlzU2VjcmV0KSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gW1xyXG5cdFx0XHRTZWNyZXRQbGF5ZWRGcm9tSGFuZEFjdGlvbi5jcmVhdGUoXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0dGltZXN0YW1wOiBpdGVtLnRpbWVzdGFtcCxcclxuXHRcdFx0XHRcdGluZGV4OiBpdGVtLmluZGV4LFxyXG5cdFx0XHRcdFx0ZW50aXR5SWQ6IHBsYXllZENhcmRJZCxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHRoaXMuYWxsQ2FyZHMsXHJcblx0XHRcdCksXHJcblx0XHRdO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHJlZHVjZShhY3Rpb25zOiByZWFkb25seSBBY3Rpb25bXSk6IHJlYWRvbmx5IEFjdGlvbltdIHtcclxuXHRcdHJldHVybiBhY3Rpb25zO1xyXG5cdH1cclxufVxyXG4iXX0=