/** 主题内实体贴图（resources 相对路径，无 .png） */
export interface ThemeEntityConfig {
    /** 左上角 HUD 肖像（缺省用 playerFront；丝路对齐 Unity idel-反） */
    portrait?: string;
    playerFront?: string;
    playerBack?: string;
    /** 载具四向贴图（北/东/南/西）；转向时直接切换，不做 flipX */
    vehicleNorth?: string;
    vehicleEast?: string;
    vehicleSouth?: string;
    vehicleWest?: string;
    /** @deprecated 使用 vehicleSouth / vehicleNorth */
    vehicleFront?: string;
    /** @deprecated 使用 vehicleNorth / vehicleSouth */
    vehicleBack?: string;
    prop?: string;
    /** 空地可拾取物（Unity nProp*） */
    propGround?: string;
}

/** 四种砖块：地面×2 + 墙×1 + 装饰墙×1 */
export interface ThemeTileConfig {
    Baseblock?: string;
    JumpBlock?: string;
    WallBlock?: string;
    borderDecor?: string;
}

/** HUD 右侧功能按钮贴图（相对 resources/，无扩展名；对齐 Unity GameManager.changeIcon） */
export type ThemeHudIconKey =
    | 'navigation'
    | 'revert'
    | 'speed1'
    | 'speed2'
    | 'speed4'
    | 'zoomIn'
    | 'zoomOut'
    | 'audioOn'
    | 'audioOff';

export interface ThemeHudConfig {
    navigation?: string;
    revert?: string;
    speed1?: string;
    speed2?: string;
    speed4?: string;
    zoomIn?: string;
    zoomOut?: string;
    audioOn?: string;
    audioOff?: string;
    /** Unity redArmy 等主题按钮图标缩放 */
    iconScaleX?: number;
    iconScaleY?: number;
    /** 左上角肖像是否水平翻转朝右 */
    portraitFlipX?: boolean;
    /** 左上角肖像相对 Unity 194 框的缩放（默认 1.35） */
    portraitScale?: number;
}

export interface ThemeConfig {
    /** 显示名 */
    displayName: string;
    /** textures 下文件夹名（可与主题 id 不同，如 redarmy → redArmy） */
    textureFolder?: string;
    /** 关卡背景图 */
    background?: string;
    /** 右侧 HUD 按钮贴图 */
    hud?: ThemeHudConfig;
    entities?: ThemeEntityConfig;
    tiles?: ThemeTileConfig;
    /** border 层第 4 块砖在关卡 JSON 里使用的 tileKey（如 kuai11） */
    borderDecorKey?: string;
    /** 本主题实体等比缩放（scale=1 为默认包围盒） */
    entityDisplay?: EntityDisplayGlobalConfig;
}

export interface ThemeDatabaseFile {
    version: number;
    updatedAt?: string;
    /** @deprecated 已迁移至各 theme.entityDisplay */
    entityDisplay?: EntityDisplayGlobalConfig;
    themes: Record<string, ThemeConfig>;
}

/** 相对 CELL_PIXEL（100）的宽高比例（运行时由 scale × 基准盒计算） */
export interface EntityDisplayCellBox {
    w: number;
    h: number;
}

/** themes-database.json 中存储的等比缩放（1 = 内置默认包围盒） */
export interface EntityDisplayScaleConfig {
    scale: number;
}

export interface EntityDisplayGlobalConfig {
    player: EntityDisplayScaleConfig;
    vehicle: EntityDisplayScaleConfig;
    prop: EntityDisplayScaleConfig;
    /** 空地可拾取物（nProp）等比缩放，缺省与 prop 相同 */
    propGround?: EntityDisplayScaleConfig;
    /** 砖块上可拾取物世界 Y 偏移（px），默认 HALF_H×1.36≈34 */
    propBlockYOffset?: number;
    /** 空地上可拾取物世界 Y 偏移（px），默认 -12 */
    propGroundYOffset?: number;
    /**
     * 无砖块格子（空地/载具）上角色与载具额外 Y 偏移（px），
     * 使视觉高度与站在 Baseblock 上一致；默认与 propBlockYOffset 相同
     */
    moverEmptyCellYOffset?: number;
    /** JumpBlock 上角色/载具额外 Y 抬高（px），在自动按贴图 pivot 差值之上叠加 */
    moverJumpCellYOffset?: number;
    /** 骑乘载具时角色相对载具的额外 Y 偏移（px），使角色站在载具甲板上 */
    playerRideYOffset?: number;
    /** 角色站立 Y 偏移（px，负值降低），按主题微调贴图与砖面对齐 */
    playerStandYOffset?: number;
}

export type EntityDisplayKind = 'player' | 'vehicle' | 'prop' | 'propGround';
