miduo_client/Assets/ManagedResources/~Lua/Modules/Ranking/RankingManager.lua

198 lines
6.7 KiB
Lua

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.FIGHT_LEVEL_RANK 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.ALLRANKING)) 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