import { _decorator, Label, Node, Sprite, SpriteFrame } from 'cc';
import { ResKeeper } from '../../../framework/res/ResKeeper';
import { StringUtil } from '../../../framework/util/StringUtil';
import { Framework } from '../../../framework/Framework';
import { ViewID } from '../../../framework/config/LayerConf';
const { ccclass, property } = _decorator;

@ccclass('HeroListCard')
export class HeroListCard extends ResKeeper {
	@property({ type: Sprite, tooltip: "英雄图标" })
	heroIco: Sprite = null;

	@property({ type: Label, tooltip: "英雄名字" })
	heroName: Label = null;

	@property({ type: Node, tooltip: "星级节点" })
	starNode: Node = null;

	@property({ type: [Node], tooltip: "星图" })
	stars: Node[] = [];

	@property({ type: Node, tooltip: "星级背景" })
	starBg: Node = null;

	@property({ type: Label, tooltip: "星字" })
	starTx: Label = null;
	
	private data = {};
	protected onLoad() {
		
	}

	protected onDestroy() {
		//如果该组件有事件自行取消注释
		//Framework.event.removeEvent(this);
		super.onDestroy();
	}
	
	//如果使用了池中的节点,在该函数内归还,该函数会在onDestroy前调用
	onClose() {
		
	}

	//UI事件处理
	private onTouchButton(event: Event) {
		//Framework.audio.playEffect(AudioID.Click);
		let target: any = event.target;
	}

	refreshItem(data) {
		this.data = data;

		this.load('common', `texture/icon/hero/head_${data.conf.Id}/spriteFrame`, SpriteFrame, (res: SpriteFrame) => {
			this.heroIco.spriteFrame = res;
		})

		this.heroName.string = StringUtil.getLanguageData('英雄_' + data.conf.Id);;

		if (data.id) {
			this.node.getComponent(Sprite).grayscale = false;
			this.heroIco.grayscale = false;
			this.starNode.active = true;
			for (const index in this.stars) {
				if (Object.prototype.hasOwnProperty.call(this.stars, index)) {
					const star = this.stars[index];
					star.active = false;
				}
			}
			this.starBg.active = true;
			this.starTx.string = '0';
		} else {
			this.node.getComponent(Sprite).grayscale = true;
			this.heroIco.grayscale = true;
			this.starNode.active = false;
			this.starBg.active = false;
		}
	}

	//打开英雄详情界面
	openHeroAttr() {
		if (!this.data['id']) {
			Framework.tips.setTips(StringUtil.getLanguageData('英雄未激活!'));
			return;
		}
		Framework.layer.open(ViewID.HeroAttr,null,{heroDate:this.data});
	}
}