
import { _decorator, Component, EditBox, game, instantiate, Label, Node, Prefab } from 'cc';
import { UtilsPanel } from '../../scene/script/UtilsPanel';
import { Generate } from '../../scene/script/components/Generate';
import { Config, nav_info } from '../../scene/script/NavInfo';
import { WebRequest } from '../../scene/script/WebRequest';
const { ccclass, property } = _decorator;

type RateInfo = {
    Min: number
    Max: number
    Ratio: number
}
//money * rate * (1 + Ratio) = gold;
export type ShopData = {
    MinMoney: number //最小金额
    Rate: number //金币/钱
    DefaultPrice: number[] //默认商品
    RatioConfig: RateInfo[]
}

@ccclass('Pay')
export class Pay extends Component {
    
    public static clacGold(money: number){
        let config = Pay.data_shop;
        if(!config || money < config.MinMoney)return 0;
        let ratio_info = config.RatioConfig.find(function(info){return money >= info.Min && money <= info.Max});
        if(!ratio_info){
            let ratios = config.RatioConfig;
            ratio_info = ratios[ratios.length - 1];
        }
        return Math.floor(money * (ratio_info.Ratio + 1) * config.Rate);
    }
    public static buy(price:number){
        let user_id = Pay.user_id;
        if(user_id.length == 0){
            nav_info.scene.showTip("يرجى إدخال ال ID حقك");
            return;
        }
        let url = nav_info.is_test ? Config.url_pay_test : Config.url_pay;
        let final_url = `${url}?UserID=${user_id}&Price=${price}&ProductID=0&PartnerID=110&Currency=SAR&Country=SA&T=${new Date().getTime()}`;
        window.open(final_url);
    }
    public static user_id = "";
    public static data_shop:ShopData = null;

    private node_descid: Node = null;
	private node_buy: Node = null;
	private gene_items: Generate = null;
    private node_light: Node = null;
	private lb_money: Label = null;
	private edit_id: EditBox = null;
    
    private select_data = 0;

	protected start(){
		UtilsPanel.getAllNeedCom(this, this.node, true);
        UtilsPanel.addBtnEvent(this.node_buy, this.onBuy, this);
        // @ts-ignore
        game.on("select_item", this.onSelect, this);
        let url = nav_info.is_test ? Config.url_product_test : Config.url_product;
        // this.test();return;
        new WebRequest().getData(url, "", (succ:boolean,content:string)=>{
            if(succ){
                let info:ShopData = Pay.data_shop = JSON.parse(content);
                // console.log("fwef:",info);
                this.gene_items.initData(new Array(info.DefaultPrice.length + 1));
                this.node_light.setSiblingIndex(-1);
            }
        }, false);
	}
    private onEditChange(){
        this.node_descid.active = this.edit_id.string.length == 0;
        Pay.user_id = this.edit_id.string;
    }
    private onSelect(money:number, node:Node){
        this.select_data = money;
        this.lb_money.string = money + "";
        this.node_light.active = true;
        this.node_light.setPosition(node.position);
    }
    private onBuy(){
        if(this.select_data == 0){
            nav_info.scene.showTip("يرجى اختيار الباقة التي ترغب بشرائها");
            return;
        }
        Pay.buy(this.select_data);
    }
    // private test(){
    //     let info = Pay.data_shop = {"MinMoney": 450, "Rate": 10000, "DefaultPrice": [1000,3000,6000,8000,10000],
    //     	"RatioConfig": [
    //     	{"Min":400,"Max": 1000, "Ratio": 0.7},
    //     	{"Min":1001,"Max": 3000, "Ratio": 0.8},
    //     	{"Min":3001,"Max": 6000, "Ratio": 1},
    //     	{"Min":6001,"Max": 8000, "Ratio": 1.2},
    //     	{"Min":8001,"Max": 10000, "Ratio": 1.4},
    //     	{"Min":10001,"Max": 10000000, "Ratio": 2}
    //     	]}
    //     this.gene_items.initData(new Array(info.DefaultPrice.length + 1));
    // }
    
}
