import { Animation, Button, SpriteFrame, Tween, tween, Vec3, _decorator } from 'cc';
import { NodeEx } from '../../framework/pool/NodeEx';
import { StringUtil } from '../../framework/util/StringUtil';
import { GameConf } from '../data/GameConf';
const { ccclass, property } = _decorator;


@ccclass('PropNode')
export class PropNode extends NodeEx {
	private callBack: Function = null
	private itemData: any = null
	private propType = null
	private originData: any = null

	/**
	 * 初始化道具
	 * @param propInfo 
	 * @param type 1-载具
	 */
	init(propInfo: any) {
		this.originData = propInfo
		//普通道具
		this.initIconItemRes(1)
	}

	/**
	 * 初始化道具sprite
	 * @param iconId 
	 * @param type 根据类型 判读路径 1 载具 如果空则为通用道具 2 包裹图片
	 */
	private initIconItemRes(iconId: number, quality?: number) {
		let path = `texture/common/equip/${iconId}/SpriteFrame`
		this.load("package", path, SpriteFrame, (res: SpriteFrame) => {
			this.Sprite.item.spriteFrame = res
		})

	}



	public setCallBack(cb: Function) {
		this.callBack = cb
	}

	public setCount(count: number) {
		this.Label.count.node.active = true
		if (count > 1) {
			this.Label.count.string = `${count}`
		} else {
			this.Label.count.node.active = false
		}
	}
	// 设置品级
	public showQuality(isShow: boolean, path?: string) {
		this.Sprite.quality.node.active = isShow
		if (isShow) {
			this.load("package", path, SpriteFrame, (sp: SpriteFrame) => {
				this.Sprite.quality.spriteFrame = sp
			})
		}
	}

	public showSelect(isShow: boolean, path?: string) {
		this.Sprite.select.node.active = isShow
		if (isShow) {
			this.load("package", path, SpriteFrame, (sp: SpriteFrame) => {
				this.Sprite.select.spriteFrame = sp
			})
		}
	}
	public getCountLable() {
		return this.Label.count
	}
	// 点击
	public onClickBtn(resulut?: boolean) {

	}

	public setSwallowTouches(isTouch: boolean) {
		this.Sprite.item.getComponent(Button).enabled = isTouch
	}

	//如果使用了池中的节点,在该函数内归还,该函数会在onDestroy前调用
	onClose() {
	}

	// public setItemData(data: GameConf.ItemData) {
	// 	this.itemData = data
	// 	this.initIconItemRes(this.itemData.id)
	// }

	public getItemData() {
		return this.itemData
	}

	public getPropType() {
		return this.propType
	}

	public getOriginData() {
		return this.originData
	}

	public getIsPackage() {
		if (this.originData.id >= 1065 && this.originData.id <= 1070) {
			return true
		} else {
			return false
		}
	}
}