Files
kadi_backend/src/Objects/AccountStats.ts
Daniel Ledda 5f747142e5 Big update
2020-08-13 15:10:55 +02:00

39 lines
1.2 KiB
TypeScript

import {RulesetSchema} from "../rulesets";
import {AccountStatsMongoData, OutcomeType, PlayerGameResults} from "./DefaultStatsMongoData";
import {UpdateError} from "../errors";
import StatsUpdater from "./StatsUpdater";
import Ruleset from "./Ruleset";
class AccountStats {
private data: AccountStatsMongoData;
private readonly updater: StatsUpdater;
constructor(data: AccountStatsMongoData) {
this.data = data;
this.updater = new StatsUpdater();
this.updater.use(data);
}
use(data: AccountStatsMongoData) {
this.data = data;
this.updater.use(data);
}
updateStats(playerGameResults: (PlayerGameResults & {outcome: OutcomeType})[], ruleset: Ruleset): void {
if (this.data) {
for (const playerGameResult of playerGameResults) {
this.updater.updateStats(playerGameResult, ruleset);
}
this.data.gamesPlayed += 1;
}
else {
throw new UpdateError(`Cannot update without data! Call the use() method to hydrate the updater with data
to analyse.`);
}
}
getData(): AccountStatsMongoData {
return this.data;
}
}
export default AccountStats;