import { _decorator, Component, Node, profiler, SpriteComponent, LabelComponent, ButtonComponent, loader, SpriteFrame } from 'cc';
import { NoticeManager } from '../../../engines/notices/NoticeManager';
import StringUtils from '../../../engines/utils/StringUtils';
import { PlatformManager } from '../../../Platform/PlatformManager';
import GameConfigManager from '../../models/GameConfigManager';
import { GameModel } from '../../models/GameModel';
const { ccclass, property } = _decorator;

@ccclass('ShopItemRenderScript')
export class ShopItemRenderScript extends Component {
    
    @property({
        type:SpriteComponent
    })
    icon:SpriteComponent=null;

    @property({
        type:LabelComponent
    })
    levelLabel:LabelComponent=null;

    @property({
        type:LabelComponent
    })
    nameLabel:LabelComponent=null;

    @property({
        type:ButtonComponent
    })
    freeBuyButton:ButtonComponent=null;

    @property({
        type:LabelComponent
    })
    freeBuyButtonLabel:LabelComponent=null;

    @property({
        type:ButtonComponent
    })
    diamondBuyButton:ButtonComponent=null;

    @property({
        type:LabelComponent
    })
    diamondBuyButtonLabel:LabelComponent=null;


    @property({
        type:ButtonComponent
    })
    GlodBuyButton:ButtonComponent=null;

    @property({
        type:LabelComponent
    })
    GlodBuyButtonLabel:LabelComponent=null;

    @property({
        type:Node
    })
    lockState:Node=null;

    
    private data:any;

    start () {
        // Your initialization goes here.
    }

    UpdateItemRender(data:any):void{
        this.data=data;
        this.RefreshItem();
    }

    private RefreshItem():void{
        let weaponConfig:any=GameConfigManager.GetWeaponConfig(this.data.id);
        //图标
        loader.loadRes(weaponConfig.icon+"/spriteFrame",SpriteFrame,(err:Error,asset:SpriteFrame)=>{
            if(err!=null){
                console.log("加载图标出错："+weaponConfig.icon);
                return;
            }
            this.icon.spriteFrame=asset;
        })
        //等级
        this.levelLabel.string=weaponConfig.level.toString();
        //名称
        this.nameLabel.string=weaponConfig.name;
        let price:number;
        //state 0 未解锁  1 已解锁
        if(this.data.state==0){
            this.freeBuyButton.node.active=this.diamondBuyButton.node.active=this.GlodBuyButton.node.active=false;
            this.lockState.active=true;
        }else{
            this.lockState.active=false;
            //buyType 购买方式 0金币购买  1宝石购买 2看广告购买
            if(this.data.buyType==0){//金币购买
                this.freeBuyButton.node.active=this.diamondBuyButton.node.active=false;
                this.GlodBuyButton.node.active=true;
                price=GameModel.single.GetWeaponBuyPrice(this.data.id);
                this.GlodBuyButtonLabel.string=StringUtils.numberUtilsEn(price);
            }else if(this.data.buyType==1){//宝石购买
                this.freeBuyButton.node.active=this.GlodBuyButton.node.active=false;
                this.diamondBuyButton.node.active=true;
                price=weaponConfig.consumeDiamond;
                this.diamondBuyButtonLabel.string=StringUtils.numberUtilsEn(price);
            }else{//广告购买
                this.diamondBuyButton.node.active=this.GlodBuyButton.node.active=false;
                this.freeBuyButton.node.active=true;
            }
        }
    }

    /**
     * 金币购买
     */
    GlodBuy():void{
        if(GameModel.single.BuyWeapon(this.data.buyType,this.data.id)){
            NoticeManager.ShowPrompt("购买成功。");
        }
    }

    /**
     * 钻石购买
     */
    DiamondBuy():void{
        if(GameModel.single.BuyWeapon(this.data.buyType,this.data.id)){
            NoticeManager.ShowPrompt("购买成功。");
        }
    }

    /**
     * 视频购买
     */
    VideoBuy():void{
        PlatformManager.showRewardedVideo(()=>{
            if(GameModel.single.BuyWeapon(this.data.buyType,this.data.id)){
                NoticeManager.ShowPrompt("购买成功。");
            }
        }, ()=>{
            NoticeManager.ShowPrompt("购买失败。");
        })
    }

    // update (deltaTime: number) {
    //     // Your update function goes here.
    // }
}
