step-sequence-generator
Version:
A step sequence generator for figure skating programs
51 lines (50 loc) • 3.16 kB
TypeScript
import { Movement } from '../movement/Movement';
import { MovementLibrary } from '../movement/MovementLibrary';
import { IMovementExtended } from '../../shared/types/extended-movement/movement-extended.interface';
import { StepContext } from './StepContext';
import { StepTracker } from '../sequence-tracker/StepTracker';
import { DistanceFactorType } from '../../shared/types/distance-factor.type';
import { IStepCounter } from '../../shared/types/abstract-step-counter.interface';
import { ICoordinates } from '../../shared/types/extended-movement/movement-coordinates.interface';
import { MapMovementCompositeFilterType } from '../../shared/types/map-composite-filters.type';
import { FilterStrategyName } from '../../shared/enums/filter-stategy-name.enum';
import { BaseCompositeMovementFilters } from '../filter-strategy/BaseCompositeMovementFilters';
import { CompassArc } from '../sequence-tracker/CompassArc';
import { Roulette } from '../roulette/Roulette';
import { MovementChanceRatioMapGenerator } from '../chance-ratio-map-generator/MovementChanceRatioMapGenerator';
import { MovementChanceRatioMapType } from '../../shared/types/roulette/chance-ratio-map.type';
export declare abstract class AbstractSequenceGenerator<C extends IStepCounter> {
protected stepSequence: IMovementExtended[];
protected readonly library: MovementLibrary;
protected readonly context: StepContext<IMovementExtended>;
protected readonly counter: C;
protected readonly chanceRatioMapGenerator: MovementChanceRatioMapGenerator;
protected readonly roulette: Roulette;
protected readonly tracker: StepTracker;
protected readonly filterStrategy: MapMovementCompositeFilterType;
protected readonly compassArc: CompassArc;
protected constructor(data: {
library: MovementLibrary;
context: StepContext<IMovementExtended>;
counter: C;
chanceRatioMapGenerator: MovementChanceRatioMapGenerator;
roulette: Roulette;
tracker: StepTracker;
filterStrategy: MapMovementCompositeFilterType;
compassArc: CompassArc;
});
abstract generate(...args: unknown[]): IMovementExtended[];
protected generateMovement(distanceFactor: DistanceFactorType, filterStrategy: BaseCompositeMovementFilters): IMovementExtended;
protected extendMovement(movement: Movement): IMovementExtended;
protected chooseMovement(movements: Movement[], chanceRatioMap: MovementChanceRatioMapType): Movement;
protected getCurrentLibrary(filterStrategy: BaseCompositeMovementFilters): MovementLibrary;
protected getFilterStrategy(filterStrategyName: FilterStrategyName): BaseCompositeMovementFilters;
reset(): void;
protected resetSequence(): void;
protected update(movementExtended: IMovementExtended): void;
protected contextUpdate(movementExtended: IMovementExtended): void;
protected counterUpdate(movementExtended: IMovementExtended): void;
protected stepSequenceUpdate(movement: IMovementExtended): void;
protected getCoordinates(newMovement: Movement, distanceFactor: DistanceFactorType): ICoordinates;
protected getRandomIndex(max: number): number;
}