"use strict";
cc._RF.push(module, '43bfcJ6/25Fs4fHUE0PeBOX', 'GameTool');
// Script/module/Tool/GameTool.ts

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.GameTool = void 0;
//最大工具类  各种公共方法，以及处理上传，获取后端接口数据
var GameTool = {
    _startTime: 0,
    _endTime: 0,
    _totalTime: 0,
    //获取userId
    Authentication: function () {
        var name = "user_" + cc.fx.GameConfig.GM_INFO.gameId;
        var data = null;
        if (localStorage.getItem(name))
            data = JSON.parse(localStorage.getItem(name));
        if (data == "undifend" || data == null || data == "") {
            var url = "https://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=" +
                encodeURIComponent(location.href);
            console.log("链接没ID准备跳转", url);
            window.location.href = url;
        }
        else {
            if (!this.isNumber(data.userId)) {
                var url = "https://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=" +
                    encodeURIComponent(location.href);
                console.log("链接不合法", url);
                window.location.href = url;
            }
            else {
                cc.fx.StorageMessage.setStorage(name, data);
                cc.fx.GameConfig.GM_INFO.userId = parseInt(data.userId);
            }
        }
    },
    isNumber: function (value) {
        var result = false;
        result = typeof value === 'number';
        if (result)
            if (value < 200000)
                result = false;
        return result;
    },
    //埋点上传
    setGameData: function () {
        //GAME_DATA 初始化 每次清零
        cc.fx.GameConfig.GAME_DATA = [];
        cc.fx.GameConfig.GAME_DATA.push(cc.fx.GameConfig.CLICK_DATA);
        var level = cc.fx.GameConfig.CLICK_DATA.round;
        cc.fx.GameConfig.CLICK_init();
        var data = cc.fx.GameConfig.GAME_DATA;
        var matchId = this.getMatchId(level);
        var postData = {
            "gameId": cc.fx.GameConfig.GM_INFO.gameId,
            "userId": cc.fx.GameConfig.GM_INFO.userId,
            "scode": cc.fx.GameConfig.GM_INFO.scode,
            "matchId": matchId,
            "data": data
        };
        console.log("上传数据:", postData);
        cc.fx.HttpUtil.uploadUserLogData(postData, function () { });
    },
    //上传排行榜  type为1
    setRank: function (data) {
        //GAME_DATA 初始化 每次清零
        var postData = {
            "gameId": cc.fx.GameConfig.GM_INFO.gameId,
            "userId": cc.fx.GameConfig.GM_INFO.userId,
            "type": 1,
            "reactionTime": data,
            "totalSunCount": cc.fx.GameConfig.GM_INFO.total,
            "success": cc.fx.GameConfig.GM_INFO.success
        };
        cc.fx.HttpUtil.rankData(1, function () { }, postData);
    },
    //获取排行榜 type为2
    getRank: function (data, callback) {
        var rankLength = data.length;
        var postData = {
            "gameId": cc.fx.GameConfig.GM_INFO.gameId,
            "userId": cc.fx.GameConfig.GM_INFO.userId,
            "page": 1,
            "pageSize": rankLength
        };
        //回调进getRankData
        cc.fx.HttpUtil.rankData(2, function (data) { callback(data); }, postData);
    },
    //获取matchId  用于上传每次点击数据里面记录id方便查询
    getMatchId: function (level) {
        var matchId = cc.sys.localStorage.getItem("matchId");
        var tempId = matchId;
        if (matchId == "undifend" || matchId == null) {
            matchId = this.setMatchId();
        }
        else {
            if (this.containsNanana(matchId) == true) {
                matchId = this.setMatchId();
            }
            else {
                var char = parseInt(tempId.substring(10, tempId.length));
                if (level == 1) {
                    char += 1;
                    matchId = tempId.slice(0, 10) + char + "";
                    if (this.containsNanana(matchId))
                        matchId = this.setMatchId();
                    cc.fx.GameConfig.GM_INFO.matchId = matchId;
                    cc.sys.localStorage.setItem("matchId", matchId);
                }
            }
        }
        if (this.containsNanana(matchId) == true) {
            matchId = this.setMatchId();
        }
        return matchId;
    },
    //检测matchId 如果有缓存以前的nanana数据清除
    containsNanana: function (str) {
        return /na/i.test(str);
    },
    //重新设置MatchId
    setMatchId: function () {
        // 定义包含可用字符的字符集
        var characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        // 创建一个数组以保存随机字符
        var uuidArray = [];
        // 循环10次 生成10位的UUID
        for (var i = 0; i < 10; i++) {
            // 生成随机索引，范围是字符集的长度
            var randomIndex = Math.floor(Math.random() * characters.length);
            // 从字符集中获取随机字符
            var randomChar = characters.charAt(randomIndex);
            // 将字符添加到数组中
            uuidArray.push(randomChar);
        }
        var data = uuidArray.join('') + 1 + "";
        cc.sys.localStorage.setItem("matchNumber", 1);
        if (this.containsNanana(data))
            data = this.setMatchId();
        cc.sys.localStorage.setItem("matchId", data);
        cc.fx.GameConfig.GM_INFO.matchId = data;
        return data;
    },
    //截取名字
    subName: function (name, length) {
        if (name.length > length) {
            name = name.substring(0, length) + "...";
        }
        return name;
    },
    //设置头像
    setPic: function (node, pic) {
        node.active = false;
        var url = pic;
        setTimeout(function () {
            fetch(url)
                .then(function (response) {
                return response.headers.get('Content-Length');
            })
                .then(function (errNo) {
                if (errNo == "5093") {
                    node.active = true;
                }
            })
                .catch(function (error) {
                // console.error('Error fetching X-Info:', error);
            });
        }, 100);
        cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) {
            if (texture) {
                node.active = true;
                node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture);
            }
            else {
                // console.log(err,texture)
            }
        });
    },
    //第一个参数把目标带进来处理，第二个参数为名字长度，不同场景不同需求
    //名字4短，小排行，名字6长，大排行
    getRankData: function (data, target, nameLength) {
        target.listData = data.data.list;
        target.selfData = data.data.info;
        var rankData = [];
        var self = false;
        cc.fx.GameTool.setPic(target.selfNode.getChildByName("pic").getChildByName("icon"), target.selfData.pic);
        for (var i = 0; i <= target.listData.length - 1; i++) {
            rankData.push({ rank: (i + 1), name: target.listData[i].nickName, total: target.listData[i].totalSunCount, pic: target.listData[i].pic });
            if (cc.fx.GameConfig.GM_INFO.userId == target.listData[i].userId) {
                self = true;
                target.rankNumber = i;
                target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = (i + 1) + "";
            }
            if (i == (target.listData.length - 1) && self == false) {
                target.rankNumber = i;
                target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+";
            }
        }
        var name = cc.fx.GameTool.subName(target.selfData.nickName, nameLength);
        target.selfNode.getChildByName("nameLab").getComponent(cc.Label).string = name;
        target.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = target.selfData.totalSunCount;
        switch (target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string) {
            case "1":
                target.selfNode.getChildByName("rank").getChildByName("one").active = true;
                break;
            case "2":
                target.selfNode.getChildByName("rank").getChildByName("two").active = true;
                break;
            case "3":
                target.selfNode.getChildByName("rank").getChildByName("three").active = true;
                break;
        }
        // 大排行
        if (nameLength == 6) {
            target.rankList.setData(rankData);
            target.selfNode.opacity = 255;
            if (target.selfData.totalSunCount == 0)
                target.selfNode.opacity = 0;
        }
    },
    getSetScreenResolutionFlag: function () {
        var size = cc.winSize;
        var width = size.width;
        var height = size.height;
        if ((height / width) > (16.2 / 9))
            return false;
        return true;
    },
    //判断全面屏适配
    setFit: function (canvas) {
        var flag = cc.fx.GameTool.getSetScreenResolutionFlag();
        if (flag) {
            // console.log("不是全面屏");
        }
        else {
            // console.log("是全面屏");
        }
        return flag;
    },
    //获取游戏信息
    getGameInfo: function (node) {
        var jg = false;
        return jg;
    },
    //设置游戏信息
    setGameInfo: function (pd) {
    },
    //输入秒,返回需要展示时间格式
    getTimeMargin: function (second) {
        var total = 0;
        total = second;
        var hour = 0;
        hour = parseInt((total / 3600) + ""); //计算整数小时数
        var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数
        var min = parseInt((afterHour / 60) + ""); //计算整数分
        var m = "" + min;
        if (min < 10)
            m = "0" + min;
        var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数
        var miao = afterMin + "";
        if (afterMin < 10)
            miao = "0" + afterMin;
        return m + ':' + miao;
    },
    //获取时间戳
    getTime: function () {
        var timestamp = new Date().getTime();
        return timestamp;
    },
    pushLister: function () {
    },
    removeAllLister: function () {
    },
};
exports.GameTool = GameTool;

cc._RF.pop();