UNPKG

step-sequence-generator

Version:

A step sequence generator for figure skating programs

47 lines (46 loc) 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ThreeDifficultTurnsBlockCounter = void 0; const turn_absolute_name_enum_1 = require("../../shared/enums/turn-absolute-name.enum"); class ThreeDifficultTurnsBlockCounter { constructor() { this.blockAmount = 0; this.turns = this.initTurns(); } initTurns() { const keys = Object.values(turn_absolute_name_enum_1.TurnAbsoluteName).filter((name) => ![turn_absolute_name_enum_1.TurnAbsoluteName.CHOCTAW, turn_absolute_name_enum_1.TurnAbsoluteName.UNKNOWN].includes(name)); return new Map(keys.map((key) => [key, 0])); } update(movement) { const turnName = movement.absoluteName; const currentCount = this.turns.get(turnName); const oneTypeTurnMaxAmount = this.getOneTypeTurnMaxAmount(); if (currentCount !== undefined && currentCount < oneTypeTurnMaxAmount) { this.turns.set(turnName, currentCount + 1); } } getOneTypeTurnMaxAmount() { const values = Array.from(this.turns.values()); return values.includes(2) ? 1 : 2; } increaseAmount() { this.blockAmount += 1; } reset() { this.resetAmount(); this.resetTurns(); } resetAmount() { this.blockAmount = 0; } resetTurns() { this.turns = this.initTurns(); } get amount() { return this.blockAmount; } set amount(amount) { this.blockAmount = amount; } } exports.ThreeDifficultTurnsBlockCounter = ThreeDifficultTurnsBlockCounter;