UNPKG

step-sequence-generator

Version:

A step sequence generator for figure skating programs

46 lines (45 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MovementLibrary = void 0; const movement_enums_js_1 = require("../../shared/enums/movement-enums.js"); class MovementLibrary { constructor(movements) { this._movements = movements; } filterByIsChangeLeg() { return this.filterBy((movement) => movement.isChangeLeg); } filterByLeg(leg) { return this.filterBy((movement) => leg === movement_enums_js_1.Leg.BOTH || movement.startLeg === leg || movement.startLeg === movement_enums_js_1.Leg.BOTH); } filterByEdge(edge) { return this.filterBy((movement) => { return (edge === movement_enums_js_1.Edge.TWO_EDGES || movement.startEdge === edge || movement.startEdge === movement_enums_js_1.Edge.TWO_EDGES); }); } filterByTransitionDirection(direction) { return this.filterBy((movement) => direction === movement_enums_js_1.TransitionDirection.NONE || movement.transitionDirection === direction || movement.transitionDirection === movement_enums_js_1.TransitionDirection.NONE); } filterByRotationDirection(direction) { return this.filterBy((movement) => direction === movement_enums_js_1.RotationDirection.NONE || movement.rotationDirection === direction || movement.rotationDirection === movement_enums_js_1.RotationDirection.NONE); } filterByDifficultTurns() { return this.filterBy((movement) => movement.isDifficult && movement.type === movement_enums_js_1.MovementCharacter.TURN); } filterBy(fn) { return this.create(this.movements.filter(fn)); } create(movement) { return new MovementLibrary(movement); } get movements() { return this._movements; } } exports.MovementLibrary = MovementLibrary;