
const {ccclass, property} = cc._decorator;
@ccclass
export default class GameData extends cc.Component {
    static _instance: any;
    GM_INFO: {};
    GAME_DATA: any[];//备用
    AudioManager: any;
    BLOCK_INFO: { //难度控制
        name: string; //块名字
        //块名字
        speed: number; //每个块的基础速度
        thickness: boolean;
    }[];
    CLICK_DATA: {
        type: number; //默认类型
        level: number; //层数
        block: number; //块的名字
        percent: number; //距离中心百分比
        getScore: number; //本轮获得分数
        totalScore: number; //本轮过后总分数
        difficulty: number; //本轮难度系数
        height: boolean; //本轮是否增高
        combo: number; //连击数
        accuracy: number; //精准度 (0-3) 0 失败掉落
        jumps: number; //本轮玩家跳跃次数，1或者2
        timer: number; //本局游戏剩余时间
        fake: boolean; //是否有平台干扰项
        fakeSpeed: number; //假平台移动速度
        speed:number;  //真平台移动速度
        round:number;  //回合数
        levelMax:number,      //最高层数
        difficultyMax:number  //最高难度系数
    };
    LEVEL_INFO: { //难度控制
        speed: number; //速度加成基础
        addSpeed: number; //速度加成系数
        reduceSpeed: number; //速度增加范围
        jiansu: number; //速度增加的范围加值
        round1: number; //加速范围控制回合档数 2 小于这回合为3double hit
        round2: number; //加速范围控制回合档数 1
        round3: number; //加速范围控制回合档数 0.5
        doubleSuccess: number; //连击次数(N次以上,开启干扰项)
        fastSpeed: number; //矮薄块最快速度
        slowSpeed: number; //厚块最块速度
        doubleHit: number; //连击加成
        doubleAdd: number; //每次连击后 连击加成
        doubleMax: number; //连击加成最大值
        layer: number; //层级加成
        layerAdd: number; //每次层级提升，层级加成的加成
        star1: number; //获得一颗星百分比
        star2: number; //获得两颗星百分比
        star3: number; //获得三颗星百分比
        scoreMax: number; //暂时总分
        levelMax: number; //最高层数
        difficultyMax: number; //最高难度系数
    };




    // 0.15 0.37 0.8  获得三个星星  -2167.675  -2054  两个尺寸的屏幕的补偿值
    onLoad () {
        if (GameData._instance == null) {
            GameData._instance = this;
            // cc.game.addPersistRootNode(this.node);
         
            this.AudioManager = this.node.getComponent('BallAudioManager');
        }
        else {
            this.node.destroy();
            return;
        }
    }

    start () {
        //GAME_DATA 废弃了，暂时不删除以防后面修改回 一整局传一次
        this.GAME_DATA = [
        ]
        this.GM_INFO_init();    //GM_INFO存储 一些游戏数据，这些数据至少是当局内不会重置清零的
        this.LEVEL_init();      //每局游戏内游戏参数，可复活清零或者重玩清零
        this.BLOCK_INFO_init(); //每个游戏不同，此游戏为跳板参数
        this.CLICK_init();      //埋点数据,用于上传重要数据
    }

    GM_INFO_init(){
        this.GM_INFO = { 
            // isEnd: false,
            mean_Time:0,                //平均放箭速度
            total:0,                    //总共对的个数
            currSeed: 203213,           //用于随机数种子
            gameId:'100001',
            userId:"",
            guide:true,                 //是否有引导
            url:"https://dev.api.sparkus.cn",
            custom: 0,

            //从这开始
            jumpUpTime:0.5,             //起跳时间
            jumpDownTime:0.4,           //落地时间
            
            jumpHeight:150,             //跳跃高度
            blockMin:30,                //薄块增加高度
            blockMax:-10,                 //厚块增加高度（在自身高度基础上）此值可以为负值
            blockScale:5,               //次值满值为块种类总个数12,6为百分之50厚，50薄，个数增加，厚度比例降低    
            distanceMin:100,            //落地范围在百分百内必成功，可改参
            distanceMax:110,            //落地范围最大值，弱大于，判断脚在外面
            life:3,                   //可复活次数
            levelMax:1,              //最高层数
            difficultyMax:1,         //最高难度系数
            score:0,                  //总分
            success:true,            //是否成功
            probation:true           //试用期
        };
    }

    CLICK_init(){
        GameData._instance.CLICK_DATA = 
        {
            type:1,             //默认类型
            level:0,            //层数
            block:0,            //块的名字
            percent:0,          //距离中心百分比
            getScore:0,         //本轮获得分数
            totalScore:0,       //本轮过后总分数
            difficulty:0,       //本轮难度系数
            height:false,       //本轮是否增高
            combo:0,            //连击数
            accuracy:0,         //精准度 (0-3) 0 失败掉落
            jumps:0,            //本轮玩家跳跃次数，1或者2
            timer:0,            //本局游戏剩余时间
            fake:false,         //是否有平台干扰项
            fakeSpeed:0,        //假平台移动速度
            speed:0,             //真平台移动速度
            round:0,            //回合数
        }
    }

    LEVEL_init(){
        this.LEVEL_INFO = 
            {   //难度控制
                speed:1,      //速度加成基础
                addSpeed:0.015,   //速度加成系数
                reduceSpeed:0,  //速度增加范围
                jiansu:3,   //速度增加的范围加值
                round1:10,  //加速范围控制回合档数 2 小于这回合为3double hit
                round2:20,  //加速范围控制回合档数 1
                round3:30,  //加速范围控制回合档数 0.5
                doubleSuccess:3,    //连击次数(N次以上,开启干扰项)
                fastSpeed:3.5,  //矮薄块最快速度
                slowSpeed:4.5,  //厚块最块速度
                doubleHit:1,    //连击加成
                doubleAdd:0.05, //每次连击后 连击加成
                doubleMax:2,    //连击加成最大值
                layer:100,      //层级加成
                layerAdd:2,      //每次层级提升，层级加成的加成
                star1:0.2,      //获得一颗星百分比
                star2:0.4,      //获得两颗星百分比
                star3:0.8,       //获得三颗星百分比
                scoreMax:120000, //暂时总分
                levelMax:1,      //最高层数
                difficultyMax:1  //最高难度系数
            }
    }

    BLOCK_INFO_init(){
        this.BLOCK_INFO = [
            {   //难度控制
                name:"block1",      //块名字
                speed:8,            //每个块的基础速度
                thickness:false,    //当前块的厚度
            },
            {   //难度控制
                name:"block2",      //块名字
                speed:9,            //每个块的基础速度
                thickness:false,    //当前块的厚度
            },
            {   //难度控制
                name:"block3",      //块名字
                speed:8,            //每个块的基础速度
                thickness:false,    //当前块的厚度
            },
            {   //难度控制
                name:"block4",      //块名字
                speed:9,            //每个块的基础速度
                thickness:false,    //当前块的厚度
            },
            {   //难度控制
                name:"block5",      //块名字
                speed:8,            //每个块的基础速度
                thickness:false,    //当前块的厚度
            },
            {   //难度控制
                name:"block6",      //块名字
                speed:8,            //每个块的基础速度
                thickness:false,    //当前块的厚度
            },
            {   //难度控制
                name:"block7",      //块名字
                speed:10,            //每个块的基础速度
                thickness:true,    //当前块的厚度
            },
            {   //难度控制
                name:"block8",      //块名字
                speed:10,            //每个块的基础速度
                thickness:true,    //当前块的厚度
            },
            {   //难度控制
                name:"block9",      //块名字
                speed:10,            //每个块的基础速度
                thickness:true,    //当前块的厚度
            },
            {   //难度控制
                name:"block10",      //块名字
                speed:10,            //每个块的基础速度
                thickness:true,    //当前块的厚度
            },
            {   //难度控制
                name:"block11",      //块名字
                speed:10,            //每个块的基础速度
                thickness:true,    //当前块的厚度
            },
            {   //难度控制
                name:"block12",      //块名字
                speed:10,            //每个块的基础速度
                thickness:true,    //当前块的厚度
            },
            {   //难度控制
                name:"block0",      //块名字
                speed:14,            //每个块的基础速度
                thickness:false,    //当前块的厚度
            },
        ]
    }

    // update (dt) {}
}
