import { WeChat } from "../Share/share";
import { GameTool } from "../Tool/GameTool";


const { ccclass, property } = cc._decorator;
@ccclass('GameConfig')
export class GameConfig  {
    //所有控制信息都通过GameAppStart内控制
    private static _instance : GameConfig = null;

    static GAME_DATA: any[];
    //关卡数据



    static LEVEL_INFO: {
        id: string; //难度id
        inside: number; //内圈答案个数
        insideType: number; //内圈排列形式,1：一排，2：一列，3：随机
        outside: number; //外圈答案种类个数，大于1时，填满其他图案
        outsideType: number; //外圈排列形式，1：非四角，2：四角,3:随机
        showTime: number;   //显示时间
    }[];
  static CLICK_DATA: {
    type: number; //上传数据类型
    success: boolean; //是否正确
    round: number; //回合数轮次
    duration: number; //本轮用时
    rightChoiceOuter: any[]; //外部正确选项坐标
    userChoiceOuter: any[]; //外部玩家选项坐标
    rightChoiceInner: any[]; //内部正确选项坐标
    userChoiceInner: any[];
  };
  static GUIDE_INFO: {
    id: string; //难度id
    inside: number; //内圈答案个数
    insideType: number; //内圈排列形式,1：一排，2：一列，3：随机
    outside: number; //外圈答案种类个数，大于1时，填满其他图案
    outsideType: number; //外圈排列形式，1：非四角，2：四角,3:随机
    showTime: number;
  }[];
  static GM_INFO: {
    isCustom: boolean; //选择关卡模式
    mean_Time: number; //平均放箭速度
    total: number; //总共对的个数
    currSeed: number; //用于随机数种子
    gameId: string; //游戏ID
    userId: number; //用户ID
    guide: boolean; //是否有引导
    url: string; //访问域名
    success: boolean; //用户游戏成功与否
    matchId: any; //用于埋点上传的ID
    custom: number; //用于测试跳关卡
    round: number; //回合数
    level: number; //具体游戏难度
    guide_Level: number; //引导等级
    startTime: number; //玩家第一步操作
    random: number; //当前难度随机数
    stepTimeList: number; //整局游戏用时，由于涉及场景切换，数据需要保留
    successList: any[]; //整局胜负
    fen: number; //小局得分
    score: number; //总得分
    igniteCount: number; //玩家总计成功点火数
    min_Steps: number; //每次上一把最小步数
    min_Time: number; //每一把上次距离洪峰到来时间
  };

    // static LEVEL_INFO: {
    //     id: string; //地图ID
    //     start: string[][]; //起始状态
    //     goal: string[][]; //目标状态
    //     middle: string[][][]; //中间状态        
    //     steps: number; //最大步数
    // }[];


    //游戏内信息
    static get Instance()
    {
        if (this._instance == null)
        {
            this._instance = new GameConfig();
        }
        return this._instance;
    }
    //getSeedRandom
    static init(Authentication){
        this.CLICK_init();
        this.LEVEL_INFO_init();
        this.GM_INFO_init();
        var self = this;
        //GAME_DATA 废弃了，暂时不删除以防后面修改回 一整局传一次
        this.GAME_DATA = [
        ]

        WeChat.setShare(location.href);
        if(!Authentication) self.Authentication();
    }
    
    //数据备用
    static GM_INFO_init() {
        this.GM_INFO = {
            isCustom: false,             //选择关卡模式
            mean_Time: 0,                //平均放箭速度
            total: 0,                    //总共对的个数
            currSeed: 200000,           //用于随机数种子
            gameId: "100019",           //游戏ID
            userId: 0,                  //用户ID
            guide: true,                 //是否有引导
            url: "https://api.sparkus.cn",//访问域名
            success: false,             //用户游戏成功与否
            matchId: null,              //用于埋点上传的ID
            custom: 0,                  //用于测试跳关卡
            round:0,                    //回合数
            level: 0,                   //具体游戏难度
            guide_Level:4,              //引导等级
            startTime:-1,               //玩家第一步操作
            random:0,                   //当前难度随机数
            stepTimeList:0,             //整局游戏用时，由于涉及场景切换，数据需要保留
            successList:[],              //整局胜负
            fen:0,                      //小局得分
            score:0,                    //总得分
            igniteCount: 0,             //玩家总计成功点火数
            min_Steps:0,                //每次上一把最小步数
            min_Time:0                  //每一把上次距离洪峰到来时间
        };

    }
    static GM_INFO_SET(key,value) {
        this.GM_INFO[key] = value;
    }
    static CLICK_init() {
        this.CLICK_DATA =
        {
            type: 1,            //上传数据类型
            success: false,     //是否正确
            round: 0,           //回合数轮次
            duration:0,         //本轮用时
            rightChoiceOuter:[],//外部正确选项坐标
            userChoiceOuter:[], //外部玩家选项坐标
            rightChoiceInner:[],//内部正确选项坐标
            userChoiceInner:[], //内部玩家选项坐标
        }
    }

    static CLICK_SET(key,value) {
        this.CLICK_DATA[key] = value;
    }

    static LEVEL_INFO_init() {
        this.LEVEL_INFO = [{
             "id":"1",          //难度id
             "inside":3,        //内圈答案个数
             "insideType":1,    //内圈排列形式,1：一排，2：一列，3：随机
             "outside":0,       //外圈答案种类个数，大于1时，填满其他图案
             "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
             "showTime":1.2,      //显示时间，秒为单位
           },
           {
            "id":"2",          //难度id
            "inside":3,        //内圈答案个数
            "insideType":2,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":0,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.2,      //显示时间，秒为单位
          },
          {
            "id":"3",          //难度id
            "inside":3,        //内圈答案个数
            "insideType":3,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":0,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1,      //显示时间，秒为单位
          },
          {
            "id":"4",          //难度id
            "inside":4,        //内圈答案个数
            "insideType":3,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":0,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1,      //显示时间，秒为单位
          },
          {
            "id":"5",          //难度id
            "inside":0,        //内圈答案个数
            "insideType":1,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":1,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":0.9,      //显示时间，秒为单位
          },
          {
            "id":"6",          //难度id
            "inside":0,        //内圈答案个数
            "insideType":1,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":1,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":2,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":0.9,      //显示时间，秒为单位
          },
          {
            "id":"7",          //难度id
            "inside":0,        //内圈答案个数
            "insideType":1,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":2,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.2,      //显示时间，秒为单位
          },
          {
            "id":"8",          //难度id
            "inside":0,        //内圈答案个数
            "insideType":1,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":3,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":2,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.2,      //显示时间，秒为单位
          },
          {
            "id":"9",          //难度id
            "inside":3,        //内圈答案个数
            "insideType":1,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":1,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.2,      //显示时间，秒为单位
          },
          {
            "id":"10",          //难度id
            "inside":3,        //内圈答案个数
            "insideType":2,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":1,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":2,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.2,      //显示时间，秒为单位
          },
          {
            "id":"11",          //难度id
            "inside":3,        //内圈答案个数
            "insideType":1,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":2,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.8,      //显示时间，秒为单位
          },
          {
            "id":"12",          //难度id
            "inside":3,        //内圈答案个数
            "insideType":2,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":2,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":2,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.8,      //显示时间，秒为单位
          },
          {
            "id":"13",          //难度id
            "inside":4,        //内圈答案个数
            "insideType":3,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":3,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":3,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.8,      //显示时间，秒为单位
          },
          {
            "id":"14",          //难度id
            "inside":4,        //内圈答案个数
            "insideType":3,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":3,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":3,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.8,      //显示时间，秒为单位
          },
          {
            "id":"15",          //难度id
            "inside":5,        //内圈答案个数
            "insideType":3,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":3,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":3,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.5,      //显示时间，秒为单位
          },
          {
            "id":"16",          //难度id
            "inside":5,        //内圈答案个数
            "insideType":3,    //内圈排列形式,1：一排，2：一列，3：随机
            "outside":3,       //外圈答案种类个数，大于1时，填满其他图案
            "outsideType":3,   //外圈排列形式，1：非四角，2：四角,3:随机
            "showTime":1.5,      //显示时间，秒为单位
          }
        ]

        this.GUIDE_INFO =[
            {
              "id":"1",          //难度id
              "inside":3,        //内圈答案个数
              "insideType":1,    //内圈排列形式,1：一排，2：一列，3：随机
              "outside":0,       //外圈答案种类个数，大于1时，填满其他图案
              "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
              "showTime":10000,      //显示时间，秒为单位
            },
            {
              "id":"5",          //难度id
              "inside":0,        //内圈答案个数
              "insideType":1,    //内圈排列形式,1：一排，2：一列，3：随机
              "outside":1,       //外圈答案种类个数，大于1时，填满其他图案
              "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
              "showTime":10000,      //显示时间，秒为单位
            },
            {
              "id":"7",          //难度id
              "inside":0,        //内圈答案个数
              "insideType":1,    //内圈排列形式,1：一排，2：一列，3：随机
              "outside":2,       //外圈答案种类个数，大于1时，填满其他图案
              "outsideType":1,   //外圈排列形式，1：非四角，2：四角,3:随机
              "showTime":10000,      //显示时间，秒为单位
            },
        ]
        
        // this.LEVEL_INFO = [{"id":"0001",   //地图ID
        //     "start":[['r'], ['b'], ['g']],  //起始状态
        //     "goal":[[], ['r', 'g'], ['b']], //目标状态
        //     "middle":[[['b', 'r', 'g'], [], []], [['g'], ['b'], ['r']], [['r', 'b'], ['g'], []]],//中间状态        
        //     "steps":17  //最大步数
        // }];

    
        // 0  12 3
        // 312 0  0   2 3 1     13 2 0


        // [2], [1], [3]
        // [[2, 1, 3], [], []]


        // [[], [2, 3], [1]]
        // [[1, 2], [], [3]]
        // [[[1], [2, 3], []], 
        // [[1], [], [3, 2]]]
    }


    static Authentication(){
        cc.fx.GameTool.Authentication();
    }
}

