import { CommonStyleType } from '../common.js';

/**
 * 模型选项接收一个有模型选项对象组成的数组, 您可以通过这个选项来配置模型地址来源以及缩放比例、舞台大小等
 * @usage
 * <<< @/usages/options.ts#ModelOptions
 */
export interface ModelOptions {
    /**
     * 模型的唯一标识, 当您需要判断当前模型时会非常有用
     */
    name?: string;
    /**
     * 是否显示该模型的点击区域框, 该选项是为了方便您预览和调试模型的可点击区域, 当这个选项为true时,将显示该模型的所有可点击区域, 点击区域的大小与位置取决于模型本身
     */
    showHitAreaFrames?: boolean;
    /**
     * 模型的 json 文件 url 地址, 必填项, 当 path 为数组时, 表示该模型有一系列皮肤可以切换
     */
    path: string | string[];
    /**
     * 模型的缩放比例
     * @default 0.1
     */
    scale?: number;
    /**
     * 模型的旋转角度, 单位:度 (0-360)
     * @default 0
     */
    rotation?: number;
    /**
     * 设置模型在舞台中的锚点位置
     * @default [0,0]
     */
    anchor?: [x: number, y: number];
    /**
     * 模型在舞台中的位置。x: 横坐标, y: 纵坐标
     *
     * @default [0,0]
     */
    position?: [x: number, y: number];
    /**
     * 定义舞台样式, 支持传入CSS对象, 传入的样式将通过内联样式作用于舞台元素, 舞台的默认宽高将自适应模型的宽高, 舞台内Canvas元素的宽高始终与舞台保持一致
     */
    stageStyle?: CommonStyleType;
    /**
     * 移动端时模型的缩放比例
     * @default 0.1
     */
    mobileScale?: number;
    /**
     * 移动端时模型在舞台中的位置。x: 横坐标, y: 纵坐标
     * @default [0,0]
     */
    mobilePosition?: [x: number, y: number];
    /**
     * 移动端舞台的样式, 支持传入CSS对象, 传入的样式将通过内联样式作用于舞台元素, 舞台的默认宽高将自适应模型的宽高, 舞台内Canvas元素的宽高始终与舞台保持一致, 仅在移动端生效
     */
    mobileStageStyle?: CommonStyleType;
    /**
     * 动作预加载策略
     * @default IDLE
     */
    motionPreloadStrategy?: 'ALL' | 'IDLE' | 'NONE';
    /**
     * 模型播放声音的音量, 声音与动作一起播放, 如果模型存在声音资源的话, 值为 0-1 之间的number类型, 0为静音
     * @default 0.5
     */
    volume?: number;
}
