step-sequence-generator
Version:
A step sequence generator for figure skating programs
47 lines (46 loc) • 1.59 kB
JavaScript
;
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;