/** 参数类型 */
export enum ParamType {
    COMPLETE = 0,
    BOOLEAN = 1,
    NUMBER = 2,
    TRIGGER = 3,
    AUTO_TRIGGER = 4
}

/** 逻辑类型 */
export enum LogicType {
    EQUAL = 0,
    NOTEQUAL = 1,
    GREATER = 2,
    LESS = 3,
    GREATER_EQUAL = 4,
    LESS_EQUAL = 5
}

/** 调用时机 */
export enum CheckType {
    /** 每帧调用 */
    CHECK_ON_UPDATE = 1,
    /** 动画结束 */
    CHECK_ON_COMPLETE = 2,
    CHECK_ON_TRIGGER = 3
}

/**
 * 参数数据
 */
export interface ParameterData {
    /** 参数名 */
    param: string;
    /** 参数类型 */
    type: ParamType;
    /** 初始值 */
    init: number;
}

/**
 * 状态数据
 */
export interface StateData {
    /** 状态名 */
    state: string;
    /** 动画名 */
    motion: string;
    /** 动画播放速度 */
    speed: number;
    /** number类型的参数名,用于speed的乘积 */
    multiplier: string;
    /** 动画是否循环播放 */
    loop: boolean;
    /** 连线 */
    transitions: TransitionData[];
}

/**
 * 连线数据
 */
export interface TransitionData {
    /** 目标状态 */
    toState: string;
    /** 是否等动画播放完跳转 */
    hasExitTime: boolean;
    /** 条件 */
    conditions: ConditionData[];
}

/**
 * 条件数据
 */
export interface ConditionData {
    /** 此条件对应的参数名 */
    param: string;
    /** 此条件对应的值 */
    value: number;
    /** 此条件与值比较的逻辑 */
    logic: LogicType;
}

/** 
 * 编辑器版本号
 */
export const ANIMATOR_VERSION = '1.0.0';