RankingManager = {} local this = RankingManager this.CurPage=0 this.curRankingData={}--战力排行滚动数据 this.curRankingMyRankData={} --我的数据 this.mainLevelConfig={} this.isRequest=0--防止连续请求 function this.Initialize() end local cur_rankType = 0 local cur_activiteId = 0 local cur_rankIndex = 0 local cur_isMax = false --初始化排行数据(待优化) function this.InitData(rankType,fun,id,rankIndex) cur_rankType = rankType local activiteId = (id ~= nil and id > 0) and id or nil--点金时需要 当为公会副本是为章节id cur_activiteId = activiteId cur_rankIndex = 1 cur_isMax = false local isCross = 0 for i = 1, #rankKingList do if rankType == rankKingList[i].rankType then if rankKingList[i].isRankingMainPanelShow == 2 or rankKingList[i].isRankingMainPanelShow == 3 then isCross = 1 end if rankKingList[i].isRankingMainPanelShow == 4 then--跨服十绝阵判断 if PlayerManager.isCross == 1 then isCross = 1 end end end end --LogYellow("cur_rankType "..cur_rankType.." activiteId "..tostring(activiteId)) NetManager.RequestRankInfo(rankType, function (msg)--请求数据 this.ReceiveRankingData(msg,fun) end,activiteId,cur_rankIndex,isCross) end --请求排行榜下面数据 function this.RequestNextWarPowerPageData(fun) if cur_isMax then --LogGreen(Language[12215]) return end -- Log("cur_rankIndex "..cur_rankIndex) local isCross = 0 for i = 1, #rankKingList do if cur_rankType == rankKingList[i].rankType then if rankKingList[i].isRankingMainPanelShow == 2 or rankKingList[i].isRankingMainPanelShow == 3 then isCross = 1 end if rankKingList[i].isRankingMainPanelShow == 4 then if PlayerManager.isCross == 1 then isCross = 1 end end end end NetManager.RequestRankInfo(cur_rankType, function (msg)--请求数据 this.ReceiveNextRankingData(msg,fun) end,cur_activiteId,cur_rankIndex,isCross) end ---战力战力 --接收服务器战力数据 function this.ReceiveRankingData(msg,fun) --自身数据 this.curRankingData = {} this.curRankingMyRankData=msg.myRankInfo --滚动数据 local length=#this.curRankingData for i, rank in ipairs(msg.ranks) do -- LogGreen("UserRank:"..rank.rankInfo.rank.." userName:"..rank.userName.." userGuide:"..rank.guildName.." rank.rankInfo.param1:"..rank.rankInfo.param1.." rank.rankInfo.param2:"..rank.rankInfo.param2.." practiceLevel:"..rank.practiceLevel) rank.userName = PracticeManager.SetNameColor(rank.userName,rank.practiceLevel) --rank.crossScore=100 this.curRankingData[length+i]=rank end if #msg.ranks < 20 or #this.curRankingData >= 100 then cur_isMax = true end cur_rankIndex = cur_rankIndex + #msg.ranks if fun then fun() end -- Game.GlobalEvent:DispatchEvent(GameEvent.RankingList.AllRankingList) end --接收服务器战力数据 function this.ReceiveNextRankingData(msg,fun) --滚动数据 local length=#this.curRankingData for i, rank in ipairs(msg.ranks) do -- LogGreen("UserRank "..rank.rankInfo.rank.." userName "..rank.userName.." rank.rankInfo.param1 "..rank.rankInfo.param1.." practiceLevel:"..rank.practiceLevel) -- LogError("rank.practiceLevel:"..tostring(rank.practiceLevel)) rank.userName = PracticeManager.SetNameColor(rank.userName,rank.practiceLevel) this.curRankingData[length+i]=rank end if #msg.ranks < 20 or #this.curRankingData >= 100 then cur_isMax = true end cur_rankIndex = cur_rankIndex + #msg.ranks if fun then fun() end end --获取排行榜信息 function this.GetRankingInfo() return this.curRankingData, this.curRankingMyRankData end function this.GetGoldExperSortInfo() return this.GoldExperData,this.GoldExperMyRankData end --膜拜信息 local RankProud = {} local firstRankProud = {}--后端临时数据 function this.SetAllRankProud(types,prouds) for i = 1, #types do RankProud[types[i]] = prouds[i] end end function this.SetSingleRankProud(type,proud) RankProud[type] = proud end function this.GetRankProud() return RankProud end function this.SetAllFirstRankProud(types,_firstRankProud) for i = 1, #_firstRankProud do firstRankProud[types[i]] = _firstRankProud[i] end end function this.GetAllFirstRankProud() return firstRankProud end --数据拆分 d数据 function this.CutDate(d) local dt,db={},{} for i, v in ipairs(d) do if i==1 then table.insert(dt,v) else table.insert(db,v) end end return dt,db end --膜拜红点 function this.RefreshRedPoint() local redPoint = this.RefreshRedPoint1()--本服 if not redPoint then redPoint = this.RefreshRedPoint2()--跨服 end return redPoint end --本服膜拜红点 function this.RefreshRedPoint1() if (ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.ALLRANKING)) then local proud = RankingManager.GetRankProud() local allFirstRankProud = RankingManager.GetAllFirstRankProud() if proud then --i 是编队类型 for i, v in pairs(proud) do if v == 0 and allFirstRankProud[i].uid > 0 and (i == RANK_TYPE.IGHTLEVEL_STAR or i == RANK_TYPE.FORCE_CURR_RANK or i == RANK_TYPE.GUILD_FORCE_RANK or i == RANK_TYPE.MONSTER_RANK) then--没有膜拜过 --i <= 4 前四个本服 return true end end end return false else return false end end --跨服膜拜红点 function this.RefreshRedPoint2() if GetTimeStamp() - PlayerManager.GetServerOpenTime() < 7*24*60*60 or PlayerManager.isCross == 0 then return false end if (ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.CROSS_RANK)) then local proud = RankingManager.GetRankProud() local allFirstRankProud = RankingManager.GetAllFirstRankProud() if proud and PlayerManager.isCross == 1 then --i 是编队类型 for i, v in pairs(proud) do if v == 0 and allFirstRankProud[i].uid > 0 and (i == RANK_TYPE.JUMPSERVER_FORCE_CURR_RANK or i == RANK_TYPE.JUMPSERVER_MONSTER_RANK or i == RANK_TYPE.JUMPSERVER_FIGHTLEVEL_STAR or i == RANK_TYPE.JUMPSERVER_GUILD_FORCE_RANK) then--没有膜拜过--i > 4 后四个跨服 return true end end end return false else return false end end return this