UNPKG

osbtools

Version:

A set of tools for working with osu! storyboards

190 lines (163 loc) 5.24 kB
import SbColorValue from "../storyboarding/values/sbColorValue"; import SbVectorValue from "../storyboarding/values/sbVectorValue"; import { ESbElementEasing, ESbElementLoopType, ESbElementOrigin, ESbElementProperty, ESbLayer, ESbLayerId } from "./enums"; import { Expand } from "./utils"; type TSbLayerData<T> = { title: string; elements: T[]; }; type TSbLayersBuilder<T extends string, E> = { [key in T]: TSbLayerData<E>; }; type TUnstrictStoryboardElementData = { path: string; layer?: ESbLayer; origin?: ESbElementOrigin; defaultPosition?: SbVectorValue; }; type TStoryboardElementData = { path: string; layer: ESbLayer; origin: ESbElementOrigin; defaultPosition: SbVectorValue; existStartTime: number; existEndTime: number; }; type TStoryboardElementAnimationData = { frameCount: number; frameDelay: number; loopType?: string; }; type TStoryboardElementSampleData = { path: string; startTime: number; layer: ESbLayerId; volume: number; }; type TStoryboardElementDefaultProps = { easing?: ESbElementEasing; startTime: number; endTime?: number; }; type TStoryboardElementPropertiesByLayer = Record<ESbElementProperty, TStoryboardElementProperties>; type TStoryboardElementProperties = Array<TStoryboardElementPropertyItem<ESbElementProperty>> & { getProperty: <T extends ESbElementProperty>(index: number) => TStoryboardElementPropertyItem<T>; }; type TStoryboardElementLoop = { startTime: number; loopCount: number; loopedProperties: () => TStoryboardElementProperties | undefined; }; type TStoryboardElementTrigger = { triggerName: string; startTime: number; endTime: number; triggeredProperties: () => TStoryboardElementProperties | undefined; }; type TStoryboardElementMove = Expand< { startPosition: SbVectorValue; endPosition?: SbVectorValue; } & TStoryboardElementDefaultProps >; type TStoryboardElementMoveX = { startPositionX: number; endPositionX?: number; } & TStoryboardElementDefaultProps; type TStoryboardElementMoveY = { startPositionY: number; endPositionY?: number; } & TStoryboardElementDefaultProps; type TStoryboardElementRotate = { startRotation: number; endRotation?: number; } & TStoryboardElementDefaultProps; type TStoryboardElementFade = { startFade: number; endFade?: number; } & TStoryboardElementDefaultProps; type TStoryboardElementScale = { startScale: number; endScale?: number; } & TStoryboardElementDefaultProps; type TStoryboardElementScaleVec = { startScaleVec: SbVectorValue; endScaleVec?: SbVectorValue; } & TStoryboardElementDefaultProps; type TStoryboardElementColor = { startColor: SbColorValue; endColor?: SbColorValue; } & TStoryboardElementDefaultProps; type TStoryboardElementParametersTypes = "H" | "V" | "A"; type TStoryboardElementParameters = { startParameter: TStoryboardElementParametersTypes; } & TStoryboardElementDefaultProps; type TStoryboardElementPropertiesWrapper = { properties: TStoryboardElementProperties | undefined; }; type TStoryboardElementPropertyGroupMap = { [ESbElementProperty.L]: TStoryboardElementLoop & TStoryboardElementPropertiesWrapper; [ESbElementProperty.T]: TStoryboardElementTrigger & TStoryboardElementPropertiesWrapper; }; type TStoryboardElementPropertyMap = { [ESbElementProperty.M]: TStoryboardElementMove; [ESbElementProperty.MX]: TStoryboardElementMoveX; [ESbElementProperty.MY]: TStoryboardElementMoveY; [ESbElementProperty.R]: TStoryboardElementRotate; [ESbElementProperty.F]: TStoryboardElementFade; [ESbElementProperty.S]: TStoryboardElementScale; [ESbElementProperty.V]: TStoryboardElementScaleVec; [ESbElementProperty.C]: TStoryboardElementColor; [ESbElementProperty.P]: TStoryboardElementParameters; } & TStoryboardElementPropertyGroupMap; type TStoryboardElementPropertyItem<T extends ESbElementProperty> = { type: T; data: TStoryboardElementPropertyMap[T]; toString: () => string; }; type TStoryboardSpriteLineParams = [string, ESbLayer, ESbElementOrigin, string, number, number]; type TStoryboardAnimationParams = [ string, ESbLayer, ESbElementOrigin, string, number, number, number, number, ESbElementLoopType ]; type TStoryboardSampleParams = [string, number, ESbLayerId, string, number]; type TStoryboardElementDefaultParams = [string, ESbElementEasing, number, number]; type TStoryboardElementDefaultNumericParams = [...TStoryboardElementDefaultParams, number, number]; export type { TSbLayersBuilder, TSbLayerData, TUnstrictStoryboardElementData, TStoryboardElementProperties, TStoryboardElementPropertiesByLayer, TStoryboardElementData, TStoryboardElementAnimationData, TStoryboardElementSampleData, TStoryboardElementDefaultProps, TStoryboardElementMove, TStoryboardElementMoveX, TStoryboardElementMoveY, TStoryboardElementRotate, TStoryboardElementFade, TStoryboardElementScale, TStoryboardElementScaleVec, TStoryboardElementColor, TStoryboardElementParameters, TStoryboardElementParametersTypes, TStoryboardElementLoop, TStoryboardElementTrigger, TStoryboardElementPropertyItem, TStoryboardElementPropertyMap, TStoryboardElementPropertyGroupMap, TStoryboardSpriteLineParams, TStoryboardAnimationParams, TStoryboardSampleParams, TStoryboardElementDefaultParams, TStoryboardElementDefaultNumericParams };