local EapDataMgr = EapClass("EapDataMgr") function EapDataMgr:ctor() self.SourceID = nil self.EapPhone = nil --绑定的平台手机号 self.UserId = nil --用户pid self.AppId = 1001 --应用编号 self.Ticket = "" --帐号通行证 self.Account = "" --帐号名称 self.AccountUnique = F_EapGetDeviceID() or "" --账号唯一标识 self.IP = "0.0.0.0" --IP地址 self.Province = "" --省份 self.City = "" --城市 self.Location = {} --经纬度 self.RealName = nil --身份证姓名 self.RealID = nil --身份证id self.NickName = "" --第三方昵称 self.Gender = 0 --性别 0女 1男 2未知 self.AppAccountId = "" --三方系统账号ID self.Mobile = "" --手机号 self.HeadImgUrl = "" self.UserInfo = nil --自己的完整信息 self.MatchIcons = {} --赛事宣传图 self.m_pageSize = 30 self.m_pointSelGameID = nil --自己选择的积分赛事ID self.m_allMatchs = {} --所有赛事信息 self.m_matchInfos = {} --所有赛事信息,自己参加的 self.m_gameInfos = {} --平台对应的游戏 self.m_rulesDes = nil --规则和奖励数据 self.m_matchRule = nil --赛事规则 self.m_historyMatch = {} --自己参加的历史赛事 self.m_awardUrl = EAP_APP_DOWNLOAD_URL --app跳转地址 self.m_isMatching = false --赛事结束 self.m_firstLogin = false --首登 self.m_timeConfig = {} --弹窗时间段 self:cleanData() self:preInit() --必要初始化 end function EapDataMgr:cleanData() self.m_signMatchID = nil --信息码报名的赛事id self.m_allRanks = {} --所有排名 self.m_selfRank = {} --自己排名 self.m_myScoreMatchs = {} --自己参赛的积分赛(已有积分) self.m_scoreMatchNum = {} --积分赛每个赛事参赛人数,自己对局次数 self.m_matchRound = {} --自己当日对局战绩 self.m_friends = {} --好友信息 self.m_friendMatchInfos = {} --好友赛事信息 self.m_otherMatchInfos = {} --其他人的赛事信息(搜索玩家) self.m_myMatchInfo = nil --自己进行中的赛事信息(只有一个) self.m_myUserMatchInfo = nil --自己个人赛事信息 self.m_userBaseInfos = {} --所有玩家基础身份信息,昵称等 self.m_allItems = {} --自己的道具 self.m_teamRank = {} --赛事战队排名 self.m_teamInfos = {} --战队详情 self.m_teamMems = {} --战队队员详情 --战队选拔赛 self.m_selTeamInfos = {} --自己参与的战队 self.m_selTeamMyRank = nil --自己战队的排行数据 self.m_selTeamRanks = {} --所有战队的排行数据 self.m_selTeamDailys = {} --当日详情 self.m_stAllTeamBaseInfos = {} --所有战队的信息详情 --任务 self.m_tasks = {} self.m_redInfo = nil --自己的红包 self.m_redRecords = {} --自己的红包记录 end function EapDataMgr:preInit() self:getIP() --获取ip地址 end function EapDataMgr:getIP() sendHttpReq(EAP_IP_URL, function(__status, __data) if __status and __data then __data = G_EapSdkJson.decode(__data) self.IP = __data.ip self.Province = __data.province or "" self.City = __data.city or "" end end) end --配置时间段内每天第一次登陆 function EapDataMgr:checkDailyFirst() if self:getDailyFirst() then local startTime = self.m_timeConfig.popoutStartTime or 0 local endTime = self.m_timeConfig.popoutEndTime or 0 local curTime = os.time() if curTime > startTime and curTime < endTime then self:setDailyFirst() return true end end return false end --赛事宣传图信息 function EapDataMgr:getIconInfo(__id) return self.MatchIcons[__id] end function EapDataMgr:addFriendMatchInfo(__matchID, __matchInfo) local matchInfos = self.m_friendMatchInfos[__matchID] if matchInfos then matchInfos[#matchInfos + 1] = __matchInfo end end function EapDataMgr:deleteFriendMatchInfo(__matchID, __pid) local matchInfos = self.m_friendMatchInfos[__matchID] if matchInfos then for i=1, #matchInfos do local matchInfo = matchInfos[i] if matchInfo.PID == __pid then table.remove(matchInfos, i) break end end end end function EapDataMgr:getFriendMatchInfo(__matchID, __pid) local matchInfos = self.m_friendMatchInfos[__matchID] if matchInfos then for i=1, #matchInfos do local matchInfo = matchInfos[i] if matchInfo.PID == __pid then return matchInfo end end end end function EapDataMgr:isFriend(__pid) for i=1, #self.m_friends do local friend = self.m_friends[i] if friend and __pid == friend.DPID then return true end end return false end --获取任务 function EapDataMgr:getTaskByID(__taskID) return self.m_tasks[__taskID] end --是否有可领取任务 function EapDataMgr:checkTaskFinish() for k,v in pairs(self.m_tasks) do for i=1, #v do local taskInfo = v[i] if taskInfo then if taskInfo.status == 0 then return true end end end end return false end --获取自己对局最多的赛事 function EapDataMgr:getMaxNumMatch() return self.m_scoreMatchNum[1] end --对局数刷新增加 function EapDataMgr:addGameNum(__matchID, __num) __num = __num or 1 for i=1, #self.m_scoreMatchNum do local info = self.m_scoreMatchNum[i] if info and info.MatchID == __matchID then info.GameNum = info.GameNum + __num break end end table.sort(self.m_scoreMatchNum, function(a, b) local gameNum_a = a.GameNum or 0 local gameNum_b = b.GameNum or 0 return gameNum_a > gameNum_b end) end function EapDataMgr:getScoreMatchNumInfo(__matchID) for i=1, #self.m_scoreMatchNum do local info = self.m_scoreMatchNum[i] if info and info.MatchID == __matchID then return info end end end function EapDataMgr:getMyEapScore() return self.m_allItems[ITEM_TYPE.INTEGRAL] end function EapDataMgr:getItem(__id) return self.m_allItems[__id] end function EapDataMgr:getItemName(__id) local itemNames = { --战力值 [ITEM_TYPE.POWER] = "战力值", --天梯分 [ITEM_TYPE.LADDER_SCORE] = "天梯分", --大师分 [ITEM_TYPE.MASTER_SCORE] = "大师分", --以上只在服务之间流转,不入库。可用于客户端标识奖励等 --奖章,可用于积分商城兑换 [ITEM_TYPE.INTEGRAL] = "奖章", --钻石 [ITEM_TYPE.DIAMOND] = "钻石", --eap平台币 [ITEM_TYPE.MONEY] = "平台币", --eap参赛门票 [ITEM_TYPE.EAP_TICKET] = "参赛门票", --eap参赛门票 [ITEM_TYPE.RED_CASH] = "现金红包", } return itemNames[__id] end function EapDataMgr:getUserBaseInfo(__pid) return self.m_userBaseInfos[__pid] end function EapDataMgr:getMaxRankMatch() local resMatch = nil for k,v in pairs(self.m_myScoreMatchs) do local match = v if not resMatch then resMatch = match elseif resMatch.Rank > match.Rank then resMatch = match end end return resMatch end function EapDataMgr:checkAllMatchEnd() if self.m_matchInfos then local isEnd = true for k,v in pairs(self.m_matchInfos) do if v.Status ~= MATCH_STATUS.End then isEnd = false break end end if isEnd then self.m_isMatching = false return true end else self.m_isMatching = false return true end return false end function EapDataMgr:getGameInfo(__gameid) return self.m_gameInfos[__gameid] end --历史记录赛事信息 function EapDataMgr:getHistoryMatch(__matchID) return self.m_historyMatch[__matchID] end function EapDataMgr:getSelfRankByID(__matchID) return self.m_myScoreMatchs[__matchID] end function EapDataMgr:getSelfTeamRank() local matchInfo = nil if self.m_myScoreMatchs then for k,v in pairs(self.m_myScoreMatchs) do if v.MatchID and v.TeamID then if not matchInfo then matchInfo = v elseif matchInfo.UpTime < v.UpTime then matchInfo = v end end end end return matchInfo end --所有赛事信息 function EapDataMgr:getMatchInfo(__matchID) return self.m_matchInfos[__matchID] end --玩家当前赛事状态 function EapDataMgr:getUserMatchStatus() return self.m_myUserMatchInfo.Status end --每轮赛事规则 function EapDataMgr:getRoundInfo(__round) return self.m_matchRule.VecRounds[__round] end --是否在赛事进行中 function EapDataMgr:checkMatching(__status) if __status == MATCH_STATUS.Running or __status == MATCH_STATUS.Count or __status == MATCH_STATUS.End or __status == MATCH_STATUS.Empty or __status == MATCH_STATUS.OverWait or __status == MATCH_STATUS.Wait then G_EapSdkMgr.m_isMatching = true end return G_EapSdkMgr.m_isMatching end --检查是否需要确认参赛 function EapDataMgr:checkConfirm() if self.m_myMatchInfo and self.m_myMatchInfo.Status == MATCH_STATUS.Match and self.m_myUserMatchInfo and self.m_myUserMatchInfo.Status == MATCH_STATUS.Sign then return true end return false end function EapDataMgr:getTeamRank(__round, __teamID) local roundTeams = self.m_teamRank[__round] if roundTeams then for i=1, #roundTeams do local team = roundTeams[i] if team.TeamID == __teamID then return team end end end end function EapDataMgr:getMyTeam(round) local roundTeams = self.m_teamRank[round] if roundTeams then for i=1, #roundTeams do local team = roundTeams[i] for j=1, #team.VecInfos do local mem = team.VecInfos[j] if mem.PID == self.UserId then return team end end end end end --战队成员信息 function EapDataMgr:getTeamMemInfo(__teamID, __pid) local teamMem = self.m_teamMems[__teamID] if teamMem then for i=1, #teamMem do local memInfo = teamMem[i] if memInfo and memInfo.userId == __pid then return memInfo end end end end --选拔赛战队队员信息 function EapDataMgr:getSelTeamMemInfo(__pid) local team = self.m_selTeamInfos[1] if team then local teamMem = team.members if teamMem then for i=1, #teamMem do local memInfo = teamMem[i] if memInfo and memInfo.userId == __pid then return memInfo end end end end end function EapDataMgr:InitSdk(appid, sourceid) self.SourceID = sourceid self.AppId = appid end -- 注册游戏信息 function EapDataMgr:login(account, name, headurl, phonenum, sex) self.AppAccountId = account self.NickName = filterSpecChars(name) self.HeadImgUrl = headurl self.Mobile = phonenum self.Gender = sex if (self:checkInfo()) then G_EapSocketLogin:ChangeSocketState(true) end end -- 退出登陆 function EapDataMgr:loginout() self:cleanData() G_EapSocketLogin:ChangeSocketState(false) G_EapSocketLogin:close() end -- 实名信息 function EapDataMgr:VerifyRealInfo(__name, __id) self.RealName = __name self.RealID = __id if (self.RealName and self.RealName ~= "") and (self.RealID and self.RealID ~= "") then if (not self.UserInfo) or (not self.UserInfo.strIDCard) and self.UserId then G_EapSocketLogin.request_VerifyRealNameReq(__name, __id, nil, true) end end end -- 经纬度 function EapDataMgr:SetLocationInfo(__latitude, __longitude) self.Location[0] = __latitude self.Location[1] = __longitude if (self.Location[0]) and (self.Location[1]) then if self.UserId then G_EapSocketLogin.request_SetUserLocationReq(self.Location[0], self.Location[1]) end end end ----------------------------------------- 本地存储 ---------------------------------------- --每日第一次登陆 function EapDataMgr:getDailyFirst(__event) __event = __event or DAILY_FIRST.DEFAULT_EVENT local key = "key.eapSdk.dialyFirst_"..__event local oldTime = cc.UserDefault:getInstance():getStringForKey(key) local curTime = os.date("%x") if oldTime ~= curTime then return true end return false end function EapDataMgr:setDailyFirst(__event) __event = __event or DAILY_FIRST.DEFAULT_EVENT local key = "key.eapSdk.dialyFirst_"..__event local curTime = os.date("%x") return cc.UserDefault:getInstance():setStringForKey(key, curTime) end function EapDataMgr:getFirstLogin() return cc.UserDefault:getInstance():getIntegerForKey("key.eapSdk.firstLogin") end function EapDataMgr:setFirstLogin(__state) return cc.UserDefault:getInstance():setIntegerForKey("key.eapSdk.firstLogin", __state) end --多个赛事,选中的那个赛事 function EapDataMgr:getSelMatchID() return cc.UserDefault:getInstance():getStringForKey("key.eapSdk.SelMatchID") or "" end function EapDataMgr:setSelMatchID(__matchID) return cc.UserDefault:getInstance():setStringForKey("key.eapSdk.SelMatchID", __matchID) end --是否点击进入赛事 function EapDataMgr:getClickEnter() return cc.UserDefault:getInstance():getIntegerForKey("key.eapSdk.clickEnter") or 0 end function EapDataMgr:setClickEnter(__state) return cc.UserDefault:getInstance():setIntegerForKey("key.eapSdk.clickEnter", __state) end --32强领取的红包金额 function EapDataMgr:getRedAward() return cc.UserDefault:getInstance():getStringForKey("key.eapSdk.redAward") or "" end function EapDataMgr:setRedAward(__num) return cc.UserDefault:getInstance():setStringForKey("key.eapSdk.redAward", __num) end -- 检测信息是否异常 function EapDataMgr:checkInfo() local state = true if (self.AppId == 0) then F_EapPrint("[EAPSDK_ERROR]", "未初始化sdk") state = false end if (self.NickName == "") then F_EapPrint("[EAPSDK_ERROR]", "玩家昵称未上传") state = false end if (self.AccountUnique == "") then F_EapPrint("[EAPSDK_ERROR]", "玩家mac地址设置错误") state = false end if (self.AppAccountId == "") then F_EapPrint("[EAPSDK_ERROR]", "玩家账号未上传") state = false end -- if (self.Mobile == "") then -- F_EapPrint("[EAPSDK_ERROR]", "玩家手机号设置错误") -- state = false -- end return state; end return EapDataMgr