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