@firestone-hs/replay-parser
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.9.
51 lines • 7.89 kB
JavaScript
import { Injectable } from '@angular/core';
import { EndGameAction } from '../../models/action/end-game-action';
import { Game } from '../../models/game/game';
import * as i0 from "@angular/core";
import * as i1 from "../all-cards.service";
export class EndGameParserService {
constructor(allCards) {
this.allCards = allCards;
}
parseEndGame(game) {
let turns = game.turns;
const lastTurn = turns.get(turns.size - 1);
const enrichedLastTurn = this.enrichTurn(lastTurn);
// // console.log('previous', turns.get(turns.size - 2));
turns = turns.set(turns.size - 1, enrichedLastTurn);
return Game.createGame(game, { turns });
}
enrichTurn(turn) {
const newActions = [];
for (let i = 0; i < turn.actions.length - 1; i++) {
newActions.push(turn.actions[i]);
}
if (!turn.actions[turn.actions.length - 1]) {
console.warn('missing last action' + turn.actions[turn.actions.length - 1], turn);
return turn;
}
if (!(turn.actions[turn.actions.length - 1] instanceof EndGameAction)) {
// // console.log('last action is not an endgame, returning');
return turn;
}
const newEndGame = this.enrichAction(turn.actions[turn.actions.length - 1]);
newActions.push(newEndGame);
return turn.update({ actions: newActions });
}
enrichAction(action) {
const status = action.winStatus.filter(st => st[0] === action.entityId).map(st => st[1])[0];
return action.updateAction({
isEndGame: true,
endGameStatus: status,
});
}
}
EndGameParserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: EndGameParserService, deps: [{ token: i1.AllCardsService }], target: i0.ɵɵFactoryTarget.Injectable });
EndGameParserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: EndGameParserService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: EndGameParserService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.AllCardsService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kLWdhbWUtcGFyc2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBsYXktcGFyc2VyL3NyYy9saWIvc2VydmljZXMvZ2FtZXBpcGVsaW5lL2VuZC1nYW1lLXBhcnNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBTzlDLE1BQU0sT0FBTyxvQkFBb0I7SUFDaEMsWUFBb0IsUUFBeUI7UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRTFDLFlBQVksQ0FBQyxJQUFVO1FBQzdCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCx5REFBeUQ7UUFDekQsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFVLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVU7UUFDNUIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakQsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEYsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUVELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFlBQVksYUFBYSxDQUFDLEVBQUU7WUFDdEUsOERBQThEO1lBQzlELE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFrQixDQUFDLENBQUM7UUFDN0YsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBK0IsRUFBVSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLFlBQVksQ0FBQyxNQUFxQjtRQUN6QyxNQUFNLE1BQU0sR0FBYyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkcsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFnQjtZQUN6QyxTQUFTLEVBQUUsSUFBSTtZQUNmLGFBQWEsRUFBRSxNQUFNO1NBQ0osQ0FBQyxDQUFDO0lBQ3JCLENBQUM7O2lIQXJDVyxvQkFBb0I7cUhBQXBCLG9CQUFvQixjQUZwQixNQUFNOzJGQUVOLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBsYXlTdGF0ZSB9IGZyb20gJ0BmaXJlc3RvbmUtaHMvcmVmZXJlbmNlLWRhdGEnO1xyXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uL2FjdGlvbic7XHJcbmltcG9ydCB7IEVuZEdhbWVBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uL2VuZC1nYW1lLWFjdGlvbic7XHJcbmltcG9ydCB7IEdhbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2FtZS9nYW1lJztcclxuaW1wb3J0IHsgVHVybiB9IGZyb20gJy4uLy4uL21vZGVscy9nYW1lL3R1cm4nO1xyXG5pbXBvcnQgeyBBbGxDYXJkc1NlcnZpY2UgfSBmcm9tICcuLi9hbGwtY2FyZHMuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW5kR2FtZVBhcnNlclNlcnZpY2Uge1xyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgYWxsQ2FyZHM6IEFsbENhcmRzU2VydmljZSkge31cclxuXHJcblx0cHVibGljIHBhcnNlRW5kR2FtZShnYW1lOiBHYW1lKTogR2FtZSB7XHJcblx0XHRsZXQgdHVybnMgPSBnYW1lLnR1cm5zO1xyXG5cdFx0Y29uc3QgbGFzdFR1cm4gPSB0dXJucy5nZXQodHVybnMuc2l6ZSAtIDEpO1xyXG5cdFx0Y29uc3QgZW5yaWNoZWRMYXN0VHVybiA9IHRoaXMuZW5yaWNoVHVybihsYXN0VHVybik7XHJcblx0XHQvLyAvLyBjb25zb2xlLmxvZygncHJldmlvdXMnLCB0dXJucy5nZXQodHVybnMuc2l6ZSAtIDIpKTtcclxuXHRcdHR1cm5zID0gdHVybnMuc2V0KHR1cm5zLnNpemUgLSAxLCBlbnJpY2hlZExhc3RUdXJuKTtcclxuXHRcdHJldHVybiBHYW1lLmNyZWF0ZUdhbWUoZ2FtZSwgeyB0dXJucyB9IGFzIEdhbWUpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBlbnJpY2hUdXJuKHR1cm46IFR1cm4pOiBUdXJuIHtcclxuXHRcdGNvbnN0IG5ld0FjdGlvbnMgPSBbXTtcclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdHVybi5hY3Rpb25zLmxlbmd0aCAtIDE7IGkrKykge1xyXG5cdFx0XHRuZXdBY3Rpb25zLnB1c2godHVybi5hY3Rpb25zW2ldKTtcclxuXHRcdH1cclxuXHRcdGlmICghdHVybi5hY3Rpb25zW3R1cm4uYWN0aW9ucy5sZW5ndGggLSAxXSkge1xyXG5cdFx0XHRjb25zb2xlLndhcm4oJ21pc3NpbmcgbGFzdCBhY3Rpb24nICsgdHVybi5hY3Rpb25zW3R1cm4uYWN0aW9ucy5sZW5ndGggLSAxXSwgdHVybik7XHJcblx0XHRcdHJldHVybiB0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghKHR1cm4uYWN0aW9uc1t0dXJuLmFjdGlvbnMubGVuZ3RoIC0gMV0gaW5zdGFuY2VvZiBFbmRHYW1lQWN0aW9uKSkge1xyXG5cdFx0XHQvLyAvLyBjb25zb2xlLmxvZygnbGFzdCBhY3Rpb24gaXMgbm90IGFuIGVuZGdhbWUsIHJldHVybmluZycpO1xyXG5cdFx0XHRyZXR1cm4gdHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IG5ld0VuZEdhbWUgPSB0aGlzLmVucmljaEFjdGlvbih0dXJuLmFjdGlvbnNbdHVybi5hY3Rpb25zLmxlbmd0aCAtIDFdIGFzIEVuZEdhbWVBY3Rpb24pO1xyXG5cdFx0bmV3QWN0aW9ucy5wdXNoKG5ld0VuZEdhbWUpO1xyXG5cdFx0cmV0dXJuIHR1cm4udXBkYXRlKHsgYWN0aW9uczogbmV3QWN0aW9ucyBhcyByZWFkb25seSBBY3Rpb25bXSB9IGFzIFR1cm4pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBlbnJpY2hBY3Rpb24oYWN0aW9uOiBFbmRHYW1lQWN0aW9uKTogRW5kR2FtZUFjdGlvbiB7XHJcblx0XHRjb25zdCBzdGF0dXM6IFBsYXlTdGF0ZSA9IGFjdGlvbi53aW5TdGF0dXMuZmlsdGVyKHN0ID0+IHN0WzBdID09PSBhY3Rpb24uZW50aXR5SWQpLm1hcChzdCA9PiBzdFsxXSlbMF07XHJcblx0XHRyZXR1cm4gYWN0aW9uLnVwZGF0ZUFjdGlvbjxFbmRHYW1lQWN0aW9uPih7XHJcblx0XHRcdGlzRW5kR2FtZTogdHJ1ZSxcclxuXHRcdFx0ZW5kR2FtZVN0YXR1czogc3RhdHVzLFxyXG5cdFx0fSBhcyBFbmRHYW1lQWN0aW9uKTtcclxuXHR9XHJcbn1cclxuIl19