import { _decorator, Component, Node, Sprite, Label, SpriteFrame } from 'cc';
const { ccclass, property } = _decorator;

/**
 * 预览页单个关卡 item 的视图组件
 * 挂在 PagePreviewLevels 的 listTemplate 根节点上，由编辑器拖拽绑定子节点。
 * instantiate 克隆 item 时，Cocos 会把这些 Node 引用自动重映射到克隆后的子节点，
 * 所以每个 item 拿到的都是自己的封面/标签引用，与节点层级/命名解耦。
 */
@ccclass('PreviewLevelItem')
export class PreviewLevelItem extends Component {
    @property({ type: Sprite, tooltip: '封面图 Sprite' })
    levelCover: Sprite | null = null;

    @property({ type: Label, tooltip: '答案 Label' })
    answerLabel: Label | null = null;

    @property({ type: Label, tooltip: '线索1 Label' })
    tips1Label: Label | null = null;

    @property({ type: Label, tooltip: '线索2 Label' })
    tips2Label: Label | null = null;

    @property({ type: Label, tooltip: '线索3 Label' })
    tips3Label: Label | null = null;

    /**
     * 一次性设置所有文本字段
     */
    setTexts(opts: {
        answer: string;
        hint1: string;
        hint2: string;
        hint3: string;
    }): void {
        if (this.answerLabel) this.answerLabel.string = `答案：${opts.answer}`;
        if (this.tips1Label) this.tips1Label.string = `线索一：${opts.hint1}`;
        if (this.tips2Label) this.tips2Label.string = `线索二：${opts.hint2}`;
        if (this.tips3Label) this.tips3Label.string = `线索三：${opts.hint3}`;
    }

    setCover(spriteFrame: SpriteFrame | null): void {
        if (this.levelCover && spriteFrame) {
            this.levelCover.spriteFrame = spriteFrame;
        }
    }
}
