UNPKG

step-sequence-generator

Version:

A step sequence generator for figure skating programs

93 lines (92 loc) 4.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SequenceGeneratorFactory = void 0; const MovementLibrary_1 = require("../movement/MovementLibrary"); const StepContext_1 = require("./StepContext"); const StepCounter_1 = require("../step-counter/StepCounter"); const StepTracker_1 = require("../sequence-tracker/StepTracker"); const start_coordinates_1 = require("../../shared/constants/start-coordinates"); const vectors_track_1 = require("../../shared/constants/vectors-track"); const vector_angles_1 = require("../../shared/constants/vector-angles"); const generator_type_enum_1 = require("../../shared/enums/generator-type.enum"); const DefaultStepSequenceGenerator_1 = require("./DefaultStepSequenceGenerator"); const ThreeTurnsBlockGenerator_1 = require("./ThreeTurnsBlockGenerator"); const ThreeDifficultTurnsBlockCounter_1 = require("../step-counter/ThreeDifficultTurnsBlockCounter"); const FilterCompositeMapFactory_1 = require("../filter-strategy/FilterCompositeMapFactory"); const filter_stategy_name_enum_1 = require("../../shared/enums/filter-stategy-name.enum"); const VectorKeyChanceRatioMapGenerator_1 = require("../chance-ratio-map-generator/VectorKeyChanceRatioMapGenerator"); const CompassArc_1 = require("../sequence-tracker/CompassArc"); const WeightCalculator_1 = require("../roulette/weight-calculator/WeightCalculator"); const Roulette_1 = require("../roulette/Roulette"); const NumberGenerator_1 = require("../roulette/number-generator/NumberGenerator"); const MovementChanceRatioMapGenerator_1 = require("../chance-ratio-map-generator/MovementChanceRatioMapGenerator"); class SequenceGeneratorFactory { static create(type, data) { switch (type) { case generator_type_enum_1.GeneratorType.DEFAULT: return this.createDefaultGenerator(data); case generator_type_enum_1.GeneratorType.THREE_TURNS_BLOCK: return this.createThreeTurnsBlockGenerator(data); default: throw new Error(`Unsupported generator type ${type}`); } } static createDefaultGenerator(data) { return new DefaultStepSequenceGenerator_1.DefaultStepSequenceGenerator({ ...this.createBaseConfig(data), ...this.createDefaultConfig(), threeTurnsBlockGenerator: this.createThreeTurnsBlockGenerator(data), }); } static createThreeTurnsBlockGenerator(data) { return new ThreeTurnsBlockGenerator_1.ThreeTurnsBlockGenerator({ ...this.createBaseConfig(data), ...this.createThreeTurnsBlockConfig(), }); } static createBaseConfig(data) { const roulette = new Roulette_1.Roulette({ weightCalc: new WeightCalculator_1.WeightCalculator(), numberGenerator: new NumberGenerator_1.NumberGenerator(), }); return { library: new MovementLibrary_1.MovementLibrary(data), context: new StepContext_1.StepContext(), chanceRatioMapGenerator: new MovementChanceRatioMapGenerator_1.MovementChanceRatioMapGenerator(), roulette, tracker: new StepTracker_1.StepTracker({ standardStartCoordinates: start_coordinates_1.START_COORDINATES, vectorsTrack: vectors_track_1.VECTORS_TRACK, vectorAngles: vector_angles_1.VECTOR_ANGLES, vectorKeyChanceRatioMapGenerator: new VectorKeyChanceRatioMapGenerator_1.VectorKeyChanceRatioMapGenerator(), roulette, }), compassArc: new CompassArc_1.CompassArc(), }; } static createDefaultConfig() { const filterStrategy = FilterCompositeMapFactory_1.FilterCompositeMapFactory.createMap([ filter_stategy_name_enum_1.FilterStrategyName.DEFAULT, filter_stategy_name_enum_1.FilterStrategyName.IS_CHANGE_LEG, ]); return { counter: new StepCounter_1.StepCounter(), filterStrategy: filterStrategy, }; } static createThreeTurnsBlockConfig() { const filterStrategy = FilterCompositeMapFactory_1.FilterCompositeMapFactory.createMap([ filter_stategy_name_enum_1.FilterStrategyName.THREE_DIFFICULT_TURNS, ]); return { counter: new ThreeDifficultTurnsBlockCounter_1.ThreeDifficultTurnsBlockCounter(), filterStrategy: filterStrategy, }; } createMapCompositeFilters() { } } exports.SequenceGeneratorFactory = SequenceGeneratorFactory; SequenceGeneratorFactory.generator = new Map([ [generator_type_enum_1.GeneratorType.DEFAULT, DefaultStepSequenceGenerator_1.DefaultStepSequenceGenerator], [generator_type_enum_1.GeneratorType.THREE_TURNS_BLOCK, ThreeTurnsBlockGenerator_1.ThreeTurnsBlockGenerator], ]);