UNPKG

@firestone-hs/replay-parser

Version:

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

57 lines 10.1 kB
import { Injectable } from '@angular/core'; import { GameTag, Step } from '@firestone-hs/reference-data'; import { FullEntityHistoryItem } from '../../models/history/full-entity-history-item'; import { ShowEntityHistoryItem } from '../../models/history/show-entity-history-item'; import { TagChangeHistoryItem } from '../../models/history/tag-change-history-item'; import * as i0 from "@angular/core"; export class GameStateParserService { updateEntitiesUntilMulliganState(game, entities, history) { for (const item of history) { if (item instanceof TagChangeHistoryItem) { const tagChange = item; // Once mulligan state is reached the game has been fully initialized if (tagChange.tag.tag === GameTag.MULLIGAN_STATE) { break; } // For some solo modes (like puzzles) there is no mulligan, so we based ourselves on the STEP = READY tag if (tagChange.tag.tag === GameTag.STEP && (tagChange.tag.value === Step.MAIN_READY || tagChange.tag.value === Step.BEGIN_MULLIGAN)) { break; } entities = this.updateWithTagChange(tagChange, entities); } else if (item instanceof ShowEntityHistoryItem) { entities = this.updateWithShowEntity(item, entities); } else if (item instanceof FullEntityHistoryItem) { entities = this.updateWithFullEntity(item, entities); } } return game.update({ entitiesBeforeMulligan: entities }); } updateWithTagChange(historyItem, entities) { const entity = entities .get(historyItem.tag.entity) .updateTag(historyItem.tag.tag, historyItem.tag.value); return entities.set(entity.id, entity); } updateWithShowEntity(historyItem, entities) { // No default creation - if the entity is not registered yet, it's a bug const entity = entities.get(historyItem.entityDefintion.id).update(historyItem.entityDefintion); return entities.set(entity.id, entity); } updateWithFullEntity(historyItem, entities) { // No default creation - if the entity is not registered yet, it's a bug const entity = entities.get(historyItem.entityDefintion.id).update(historyItem.entityDefintion); return entities.set(entity.id, entity); } } GameStateParserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: GameStateParserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); GameStateParserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: GameStateParserService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: GameStateParserService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtZS1zdGF0ZS1wYXJzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcGxheS1wYXJzZXIvc3JjL2xpYi9zZXJ2aWNlcy9lbnRpdGllc3BpcGVsaW5lL2dhbWUtc3RhdGUtcGFyc2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOztBQU1wRixNQUFNLE9BQU8sc0JBQXNCO0lBQzNCLGdDQUFnQyxDQUN0QyxJQUFVLEVBQ1YsUUFBNkIsRUFDN0IsT0FBK0I7UUFFL0IsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLEVBQUU7WUFDM0IsSUFBSSxJQUFJLFlBQVksb0JBQW9CLEVBQUU7Z0JBQ3pDLE1BQU0sU0FBUyxHQUF5QixJQUE0QixDQUFDO2dCQUNyRSxxRUFBcUU7Z0JBQ3JFLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLGNBQWMsRUFBRTtvQkFDakQsTUFBTTtpQkFDTjtnQkFDRCx5R0FBeUc7Z0JBQ3pHLElBQ0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLElBQUk7b0JBQ2xDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQ3ZGO29CQUNELE1BQU07aUJBQ047Z0JBQ0QsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDekQ7aUJBQU0sSUFBSSxJQUFJLFlBQVkscUJBQXFCLEVBQUU7Z0JBQ2pELFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3JEO2lCQUFNLElBQUksSUFBSSxZQUFZLHFCQUFxQixFQUFFO2dCQUNqRCxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQzthQUNyRDtTQUNEO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFVLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sbUJBQW1CLENBQUMsV0FBaUMsRUFBRSxRQUE2QjtRQUMzRixNQUFNLE1BQU0sR0FBVyxRQUFRO2FBQzdCLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQzthQUMzQixTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8sb0JBQW9CLENBQzNCLFdBQWtDLEVBQ2xDLFFBQTZCO1FBRTdCLHdFQUF3RTtRQUN4RSxNQUFNLE1BQU0sR0FBVyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4RyxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8sb0JBQW9CLENBQzNCLFdBQWtDLEVBQ2xDLFFBQTZCO1FBRTdCLHdFQUF3RTtRQUN4RSxNQUFNLE1BQU0sR0FBVyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4RyxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDOzttSEFyRFcsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FGdEIsTUFBTTsyRkFFTixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBHYW1lVGFnLCBTdGVwIH0gZnJvbSAnQGZpcmVzdG9uZS1ocy9yZWZlcmVuY2UtZGF0YSc7XHJcbmltcG9ydCB7IE1hcCB9IGZyb20gJ2ltbXV0YWJsZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uLy4uL21vZGVscy9nYW1lL2VudGl0eSc7XHJcbmltcG9ydCB7IEZ1bGxFbnRpdHlIaXN0b3J5SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9oaXN0b3J5L2Z1bGwtZW50aXR5LWhpc3RvcnktaXRlbSc7XHJcbmltcG9ydCB7IEhpc3RvcnlJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2hpc3RvcnkvaGlzdG9yeS1pdGVtJztcclxuaW1wb3J0IHsgU2hvd0VudGl0eUhpc3RvcnlJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2hpc3Rvcnkvc2hvdy1lbnRpdHktaGlzdG9yeS1pdGVtJztcclxuaW1wb3J0IHsgVGFnQ2hhbmdlSGlzdG9yeUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaGlzdG9yeS90YWctY2hhbmdlLWhpc3RvcnktaXRlbSc7XHJcbmltcG9ydCB7IEdhbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvbW9kZWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHYW1lU3RhdGVQYXJzZXJTZXJ2aWNlIHtcclxuXHRwdWJsaWMgdXBkYXRlRW50aXRpZXNVbnRpbE11bGxpZ2FuU3RhdGUoXHJcblx0XHRnYW1lOiBHYW1lLFxyXG5cdFx0ZW50aXRpZXM6IE1hcDxudW1iZXIsIEVudGl0eT4sXHJcblx0XHRoaXN0b3J5OiByZWFkb25seSBIaXN0b3J5SXRlbVtdLFxyXG5cdCk6IEdhbWUge1xyXG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIGhpc3RvcnkpIHtcclxuXHRcdFx0aWYgKGl0ZW0gaW5zdGFuY2VvZiBUYWdDaGFuZ2VIaXN0b3J5SXRlbSkge1xyXG5cdFx0XHRcdGNvbnN0IHRhZ0NoYW5nZTogVGFnQ2hhbmdlSGlzdG9yeUl0ZW0gPSBpdGVtIGFzIFRhZ0NoYW5nZUhpc3RvcnlJdGVtO1xyXG5cdFx0XHRcdC8vIE9uY2UgbXVsbGlnYW4gc3RhdGUgaXMgcmVhY2hlZCB0aGUgZ2FtZSBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZFxyXG5cdFx0XHRcdGlmICh0YWdDaGFuZ2UudGFnLnRhZyA9PT0gR2FtZVRhZy5NVUxMSUdBTl9TVEFURSkge1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vIEZvciBzb21lIHNvbG8gbW9kZXMgKGxpa2UgcHV6emxlcykgdGhlcmUgaXMgbm8gbXVsbGlnYW4sIHNvIHdlIGJhc2VkIG91cnNlbHZlcyBvbiB0aGUgU1RFUCA9IFJFQURZIHRhZ1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdHRhZ0NoYW5nZS50YWcudGFnID09PSBHYW1lVGFnLlNURVAgJiZcclxuXHRcdFx0XHRcdCh0YWdDaGFuZ2UudGFnLnZhbHVlID09PSBTdGVwLk1BSU5fUkVBRFkgfHwgdGFnQ2hhbmdlLnRhZy52YWx1ZSA9PT0gU3RlcC5CRUdJTl9NVUxMSUdBTilcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRlbnRpdGllcyA9IHRoaXMudXBkYXRlV2l0aFRhZ0NoYW5nZSh0YWdDaGFuZ2UsIGVudGl0aWVzKTtcclxuXHRcdFx0fSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgU2hvd0VudGl0eUhpc3RvcnlJdGVtKSB7XHJcblx0XHRcdFx0ZW50aXRpZXMgPSB0aGlzLnVwZGF0ZVdpdGhTaG93RW50aXR5KGl0ZW0sIGVudGl0aWVzKTtcclxuXHRcdFx0fSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgRnVsbEVudGl0eUhpc3RvcnlJdGVtKSB7XHJcblx0XHRcdFx0ZW50aXRpZXMgPSB0aGlzLnVwZGF0ZVdpdGhGdWxsRW50aXR5KGl0ZW0sIGVudGl0aWVzKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGdhbWUudXBkYXRlKHsgZW50aXRpZXNCZWZvcmVNdWxsaWdhbjogZW50aXRpZXMgfSBhcyBHYW1lKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdXBkYXRlV2l0aFRhZ0NoYW5nZShoaXN0b3J5SXRlbTogVGFnQ2hhbmdlSGlzdG9yeUl0ZW0sIGVudGl0aWVzOiBNYXA8bnVtYmVyLCBFbnRpdHk+KTogTWFwPG51bWJlciwgRW50aXR5PiB7XHJcblx0XHRjb25zdCBlbnRpdHk6IEVudGl0eSA9IGVudGl0aWVzXHJcblx0XHRcdC5nZXQoaGlzdG9yeUl0ZW0udGFnLmVudGl0eSlcclxuXHRcdFx0LnVwZGF0ZVRhZyhoaXN0b3J5SXRlbS50YWcudGFnLCBoaXN0b3J5SXRlbS50YWcudmFsdWUpO1xyXG5cdFx0cmV0dXJuIGVudGl0aWVzLnNldChlbnRpdHkuaWQsIGVudGl0eSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHVwZGF0ZVdpdGhTaG93RW50aXR5KFxyXG5cdFx0aGlzdG9yeUl0ZW06IFNob3dFbnRpdHlIaXN0b3J5SXRlbSxcclxuXHRcdGVudGl0aWVzOiBNYXA8bnVtYmVyLCBFbnRpdHk+LFxyXG5cdCk6IE1hcDxudW1iZXIsIEVudGl0eT4ge1xyXG5cdFx0Ly8gTm8gZGVmYXVsdCBjcmVhdGlvbiAtIGlmIHRoZSBlbnRpdHkgaXMgbm90IHJlZ2lzdGVyZWQgeWV0LCBpdCdzIGEgYnVnXHJcblx0XHRjb25zdCBlbnRpdHk6IEVudGl0eSA9IGVudGl0aWVzLmdldChoaXN0b3J5SXRlbS5lbnRpdHlEZWZpbnRpb24uaWQpLnVwZGF0ZShoaXN0b3J5SXRlbS5lbnRpdHlEZWZpbnRpb24pO1xyXG5cdFx0cmV0dXJuIGVudGl0aWVzLnNldChlbnRpdHkuaWQsIGVudGl0eSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHVwZGF0ZVdpdGhGdWxsRW50aXR5KFxyXG5cdFx0aGlzdG9yeUl0ZW06IEZ1bGxFbnRpdHlIaXN0b3J5SXRlbSxcclxuXHRcdGVudGl0aWVzOiBNYXA8bnVtYmVyLCBFbnRpdHk+LFxyXG5cdCk6IE1hcDxudW1iZXIsIEVudGl0eT4ge1xyXG5cdFx0Ly8gTm8gZGVmYXVsdCBjcmVhdGlvbiAtIGlmIHRoZSBlbnRpdHkgaXMgbm90IHJlZ2lzdGVyZWQgeWV0LCBpdCdzIGEgYnVnXHJcblx0XHRjb25zdCBlbnRpdHk6IEVudGl0eSA9IGVudGl0aWVzLmdldChoaXN0b3J5SXRlbS5lbnRpdHlEZWZpbnRpb24uaWQpLnVwZGF0ZShoaXN0b3J5SXRlbS5lbnRpdHlEZWZpbnRpb24pO1xyXG5cdFx0cmV0dXJuIGVudGl0aWVzLnNldChlbnRpdHkuaWQsIGVudGl0eSk7XHJcblx0fVxyXG59XHJcbiJdfQ==