/************************************************************************************

 * FileName    : HeroScrollCell.ts
 * Description : 英雄界面底部列表单元
 * Version     : v1.0.0
 * CreateTime  : 2024-10-24 17:04:57
 * Author      :
 * Copyright (c) since 2024
 * ==============================================================
 * Method Description:
 *
 * ==============================================================
 ************************************************************************************/
import {_decorator, Button, Component, Node, Sprite, SpriteFrame} from 'cc';
import {resLoader} from "db://assets/core_tgx/base/utils/ResLoader";
import {ModuleDef} from "db://assets/scripts/ModuleDef";
import { ISkinCfg } from '../../module_basic/shared/configs/interface/ISkinCfg';
const { ccclass, property } = _decorator;

@ccclass('HeroScrollCell')
export class HeroScrollCell extends Component {
    // 英雄icon
    @property(Node)
    heroIcon : Node = null;
    // 遮罩
    @property(Node)
    mask : Node = null;
    // 品质
    @property(Node)
    quality : Node = null;
    // 选中框
    @property(Node)
    choose : Node = null;

    private _fun : Function = null;
    private _data : ISkinCfg = null;
    public get data() : ISkinCfg { return this._data; }

    public setData(data : ISkinCfg,isHave : boolean,fun : Function) : void {
        this._data = data;
        this._fun = fun;
        this._initIcon();
        this._initQuality();
        this.updateChooseActive(data.isDefault === 1);
        this.updateMaskActive(!isHave);
    }

    private _initIcon() : void {
        let sp: SpriteFrame = resLoader.getSpriteFrame(`res/Image/SkinIcon/skinIcon_${this._data.id}`, ModuleDef.Arean);
        if (sp) this.heroIcon.getComponent(Sprite).spriteFrame = sp;
    }

    private _initQuality() : void {
        let sp: SpriteFrame = resLoader.getSpriteFrame(`res/Image/Quality/quality_${this._data.quality}`, ModuleDef.Arean);
        if (sp) this.quality.getComponent(Sprite).spriteFrame = sp;
    }

    public updateChooseActive(flag : boolean) : void{
        this.choose.active = flag;
    }

    public updateMaskActive(flag : boolean) : void{
        this.mask.active = flag;
    }

    public clickHero() : void{
        this._fun && this._fun(this._data.id);
        this.updateChooseActive(true)
    }
}