import { SpriteFrame } from 'cc';

/**
 * API 返回的单个关卡数据结构（关卡列表）
 */
export interface ApiLevelData {
    /** 关卡 ID (UUID) */
    id: string;
    /** 关卡序号 */
    level: number;
    /** 图片1 URL */
    image1Url: string;
    /** 图片1 文本说明 */
    image1Description: string | null;
    /** 图片2 URL */
    image2Url: string;
    /** 图片2 文本说明 */
    image2Description: string | null;
    /** 谐音梗说明（仅通关后返回，未通关为 null） */
    punchline: string | null;
    /** 线索1（未通关时为 null） */
    hint1: string | null;
    /** 线索2（未通关时为 null） */
    hint2: string | null;
    /** 线索3（未通关时为 null） */
    hint3: string | null;
    /** 答案（未通关时为 null） */
    answer: string | null;
    /** 是否已通关 */
    completed: boolean;
    /** 通关时长（秒），未通关时为 null */
    timeSpent: number | null;
}

/**
 * API 响应结构（关卡列表）
 */
export interface ApiResponse {
    /** 是否成功 */
    success: boolean;
    /** 响应消息 */
    message: string | null;
    /** 响应数据 */
    data: {
        levels: ApiLevelData[];
        total: number;
    };
}

/**
 * 运行时关卡配置（包含已加载的图片）
 */
export interface RuntimeLevelConfig {
    /** 关卡 ID */
    id: string;
    /** 关卡名称 */
    name: string;
    /** 图片1 SpriteFrame（可能为 null 如果加载失败） */
    spriteFrame1: SpriteFrame | null;
    /** 图片2 SpriteFrame（可能为 null 如果加载失败） */
    spriteFrame2: SpriteFrame | null;
    /** 图片1 文本说明 */
    image1Description: string | null;
    /** 图片2 文本说明 */
    image2Description: string | null;
    /** 谐音梗说明 */
    punchline: string | null;
    /** 线索1（未通关时为 null，进入关卡后由 enter 接口获取） */
    clue1: string | null;
    /** 线索2（未通关时为 null） */
    clue2: string | null;
    /** 线索3（未通关时为 null） */
    clue3: string | null;
    /** 答案（未通关时为 null，进入关卡后由 enter 接口获取） */
    answer: string | null;
    /** 是否已通关 */
    completed: boolean;
}
