
//这个是微信api接口
var WechatApi = {

    shareTicket:null,//群分享时的shareTicket(从主域传过来的)

    cloudInfo:null,//用户自己的数据
    groupCloudInfo:null,//用户所在群的数据
    friendCloudInfo:null,//用户好友数据
    myNode:null,  //Main脚本的this
    openId: null, //记录自己的openid
    copyFriendsInfo: null,  //复制一份好友数据
    playName: null,  //玩家名字
    imgUrl: null,  //玩家头像链接地址

    //在子域里接收主域传过来的数据,这个函数需要依据需求扩展
    //这里主域传过来的消息格式是
    get_data_from_main:function(mynode){
        WechatApi.myNode =mynode;  //main脚本的this
        WechatApi.myNode.onStage();  //适配排行榜
        wx.onMessage(function(data){
            switch (data.type) {
                case 'SaveUserInfo'://主域登录成功后先调这个接口保存用户的信息（{'type':'SaveUserInfo','openid':'openid','ticket':'Ticket'}）
                    console.log('用户信息数据:',data);
                    WechatApi.openId =data.openid;
                    WechatApi.playName =data.name;
                    WechatApi.imgUrl =data.imgUrl;
                    WechatApi.shareTicket = data.ticket;
                    break;
                case 'GroupCloud'://群排行榜({'type':'GroupCloud','key':["score"]})
                    console.log("GroupCloud",data);
                    //获取数据
                    WechatApi.getGroupCloudStorage(WechatApi.shareTicket,data.key,data.curScore,data.num);
                    break;
                case 'FriendCloud'://好友排行榜({'type':'FriendCloud','key':["score"],'myScore':'这一局的分数（可以不填）'})
                    console.log("FriendCloud",data);
                    //传自己当局游戏获得的分数 (data.curScore)
                    WechatApi.getFriendCloudStorage(data.key,data.num,data.curLevel);
                    break;
                case 'UserCloud'://获取自己的数据
                    console.log("UserCloud",data);
                    //获取数据
                    WechatApi.getUserCloudStorage(data.key);
                    break;
                default:
                    console.log("操作类型不正确哦",data);
                    break;
            }
        });
    },
    //拉取当前用户所有同玩好友的托管数据。该接口只可在开放数据域下使用
    /*只能在开放数据域下使用的！！！！
    mykey要获取的key(这个要求是数组，例如：["score"])
    */
    getFriendCloudStorage:function(mykey,tempNum,myLevel){
        //排行榜全部都隐藏
        WechatApi.myNode.onHide();

        //当我当局的游戏分数大于我的历史最高分，就要把当局分数显示到结束排行榜上面.
        if(WechatApi.friendCloudInfo) {
            //好友数据处理
            WechatApi.onDataManage(tempNum,myLevel);
            return;
        }

        wx.getFriendCloudStorage({
            keyList:mykey,
            success: function(data) {
                console.log("获取到好友数据",data);
                var mydata = data.data;
                //数据存起来
                WechatApi.friendCloudInfo = mydata;
                //复制一份好友数据(mydata)存起来
                WechatApi.copyFriendsInfo = cc.HQ.Global.deepClone(mydata);
                //显示好友排行榜
                WechatApi.onDataManage(tempNum,myLevel);
            },
            fail: function() {
                console.log('获取好友的分数出错');
            },
            complete: function() {
                console.log('正在获取好友的分数');
            }
        })
    },
    //获取当前用户托管数据当中对应 key 的数据。该接口只可在开放数据域下使用
    /*只能在开放数据域下使用的！！！！
    mykey要获取的key(这个要求是数组，例如：["score"])
    */
    getUserCloudStorage:function(mykey){
        console.log("getUserCloudStorage");
        wx.getUserCloudStorage({
            keyList:mykey,
            success: function(data) {
                console.log("自己分数",data);
                WechatApi.cloudInfo = data;
                
            },
            fail: function() {
                console.log('获取自己分数出错');
            },
            complete: function() {
                console.log('正在获取自己的分数');
            }
        })
    },
    //在小游戏是通过群分享卡片打开的情况下，可以通过调用该接口获取群同玩成员的游戏数据。该接口只可在开放数据域下使用。
    /*只能在开放数据域下使用的！！！！
    mykey要获取的key(这个要求是数组，例如：["score"])
    ticket 群分享生成的key(这个要求在游戏刚加载的时候就得获取了)
    例如在游戏加载页这样：
    wx.onShow(res => {
        var shareTicket = res.shareTicket;
    });
    */
   getGroupCloudStorage:function(Ticket,mykey,myScore,tempNum){
        console.log("getGroupCloudStorage",mykey,myScore,tempNum);
        //全部都隐藏
        WechatApi.myNode.onHide();
        
        wx.getGroupCloudStorage({
            shareTicket: Ticket,  // 需要带上shareTicket
            keyList:mykey,
            success: function(data) {
                console.log("群分数",data);
                var mydata = data.data;
                WechatApi.groupCloudInfo = mydata;
                //显示群列表数据    
                WechatApi.myNode.onShow(WechatApi.groupCloudInfo,tempNum,myScore);                                                                                                                                                                                                                                                                                                                                                                                    
            },
            fail: function() {
                console.log('获取群里的分数出错');
            },
            complete: function() {
                console.log('正在获取群里的分数');
            }
        })
    },
    //更新我的最新的分数
    //data:总体的分数数组
    updata_user_info:function(data,myScore){
        if(myScore>0){
            for(var i in data){
                if(data[i].openid == WechatApi.openId){
                   for(var q in data[i].KVDataList){
                       if(data[i].KVDataList[q].key == 'score'){
                           data[i].KVDataList[q].value = myScore;
                           break;
                       }
                   }
                   break;
                }
            }
        }
       return data;
    },

    //好友数据处理
    onDataManage: function(tempNum,myScore){
        if(tempNum ==1){
            //若当局分数大于排行榜分数，就把当局分数更新到排行榜上 
            WechatApi.myNode.onTopScoreShow(WechatApi.copyFriendsInfo,WechatApi.friendCloudInfo);
            WechatApi.myNode.onShow(WechatApi.copyFriendsInfo,tempNum,myScore);
        }else if(tempNum ==2){
            //自身分数更换显示,(结束排行榜显示当局所得分数，及我的前后各一名)
            WechatApi.myNode.onDealWith(WechatApi.friendCloudInfo,myScore);
            WechatApi.myNode.onShow(WechatApi.friendCloudInfo,tempNum,myScore);
        }else{  
            //tempNum为3时,显示的前一名玩家信息
            WechatApi.myNode.onShow(WechatApi.copyFriendsInfo,tempNum,myScore);
        }
    },


}

module.exports = WechatApi;


        

        
