local TowerRankDataMgr = class("TowerRankDataMgr") local ClimbingTowerRankData = require("ClimbingTower/ClimbingTowerRankData") function TowerRankDataMgr:ctor() self.ranks = nil self.rankPlayerIds = nil self.lastPassedTime = 0 self.selfRank = 10000 self.type = Enum.FriendTogglePageType.WjTowerRank-- Enum.FriendTogglePageType.ClimbingTower self.CallBack = nil end function TowerRankDataMgr:Clear() self.ranks = nil self.rankPlayerIds = nil end function TowerRankDataMgr:FindRankerData(uid) if self.ranks == nil then return nil end for i=1, #self.ranks do if self.ranks[i].playerId == uid then return self.ranks[i] end end return nil end function TowerRankDataMgr:GetRankList() return self.ranks end function TowerRankDataMgr:GetRankUidList(cnt) local uids = {} if self.rankPlayerIds ~= nil then if cnt > #self.rankPlayerIds then cnt = #self.rankPlayerIds end for i = 1, cnt do uids[#uids+1] = self.rankPlayerIds[i] end end return uids end function TowerRankDataMgr:OnTowerRankAck(data) --LogError("OnTowerRankAck:" .. Inspect(data)) if data.error == 0 then self.ranks = {} self.rankPlayerIds = {} for i = 1, #data.rank_list do local player = ClimbingTowerRankData:new(data.rank_list[i].key,data.rank_list[i].value) self.ranks[#self.ranks+1] = player self.rankPlayerIds[#self.rankPlayerIds+1] = data.rank_list[i].key end self.selfRank = data.self_rank local uid_list = self:GetRankUidList(10) self:ReqTowerRankBriefData(uid_list) else self.ranks = nil end end function TowerRankDataMgr:ReqTowerRankBriefData(uids) if uids == nil or #uids == 0 then --LogError('444444444') return end ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GET_OTHER_PLAYER_BRIEF_INFO_REQ, {type=self.type, player_list=uids}) end function TowerRankDataMgr:OnGetRankBriefInfoAck(data) LogError("aaa OnGetRankBriefInfoAck:" .. Inspect(data)) if data.type ~= self.type then --WjTowerRank return end if data.brief_info ~= nil then for i = 1, #data.brief_info do local info = data.brief_info[i] local ranker = self:FindRankerData(info.uid) if ranker ~= nil then ranker:SetRankData(info) end self:RemoveTempRankerId(info.uid) end end if self.CallBack ~= nil then self.CallBack() end end function TowerRankDataMgr:RemoveTempRankerId(uid) if self.rankPlayerIds == nil then return end for i = 1, #self.rankPlayerIds do if self.rankPlayerIds[i] == uid then table.remove(self.rankPlayerIds,i) return end end end return TowerRankDataMgr