TowerRankDataMgr.lua 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. local TowerRankDataMgr = class("TowerRankDataMgr")
  2. local ClimbingTowerRankData = require("ClimbingTower/ClimbingTowerRankData")
  3. function TowerRankDataMgr:ctor()
  4. self.ranks = nil
  5. self.rankPlayerIds = nil
  6. self.lastPassedTime = 0
  7. self.selfRank = 10000
  8. self.type = Enum.FriendTogglePageType.WjTowerRank-- Enum.FriendTogglePageType.ClimbingTower
  9. self.CallBack = nil
  10. end
  11. function TowerRankDataMgr:Clear()
  12. self.ranks = nil
  13. self.rankPlayerIds = nil
  14. end
  15. function TowerRankDataMgr:FindRankerData(uid)
  16. if self.ranks == nil then
  17. return nil
  18. end
  19. for i=1, #self.ranks do
  20. if self.ranks[i].playerId == uid then
  21. return self.ranks[i]
  22. end
  23. end
  24. return nil
  25. end
  26. function TowerRankDataMgr:GetRankList()
  27. return self.ranks
  28. end
  29. function TowerRankDataMgr:GetRankUidList(cnt)
  30. local uids = {}
  31. if self.rankPlayerIds ~= nil then
  32. if cnt > #self.rankPlayerIds then
  33. cnt = #self.rankPlayerIds
  34. end
  35. for i = 1, cnt do
  36. uids[#uids+1] = self.rankPlayerIds[i]
  37. end
  38. end
  39. return uids
  40. end
  41. function TowerRankDataMgr:OnTowerRankAck(data)
  42. --LogError("OnTowerRankAck:" .. Inspect(data))
  43. if data.error == 0 then
  44. self.ranks = {}
  45. self.rankPlayerIds = {}
  46. for i = 1, #data.rank_list do
  47. local player = ClimbingTowerRankData:new(data.rank_list[i].key,data.rank_list[i].value)
  48. self.ranks[#self.ranks+1] = player
  49. self.rankPlayerIds[#self.rankPlayerIds+1] = data.rank_list[i].key
  50. end
  51. self.selfRank = data.self_rank
  52. local uid_list = self:GetRankUidList(10)
  53. self:ReqTowerRankBriefData(uid_list)
  54. else
  55. self.ranks = nil
  56. end
  57. end
  58. function TowerRankDataMgr:ReqTowerRankBriefData(uids)
  59. if uids == nil or #uids == 0 then
  60. LogError('444444444')
  61. return
  62. end
  63. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GET_OTHER_PLAYER_BRIEF_INFO_REQ, {type=self.type, player_list=uids})
  64. end
  65. function TowerRankDataMgr:OnGetRankBriefInfoAck(data)
  66. LogError("aaa OnGetRankBriefInfoAck:" .. Inspect(data))
  67. if data.type ~= self.type then --WjTowerRank
  68. return
  69. end
  70. if data.brief_info ~= nil then
  71. for i = 1, #data.brief_info do
  72. local info = data.brief_info[i]
  73. local ranker = self:FindRankerData(info.uid)
  74. if ranker ~= nil then
  75. ranker:SetRankData(info)
  76. end
  77. self:RemoveTempRankerId(info.uid)
  78. end
  79. end
  80. if self.CallBack ~= nil then
  81. self.CallBack()
  82. end
  83. end
  84. function TowerRankDataMgr:RemoveTempRankerId(uid)
  85. if self.rankPlayerIds == nil then
  86. return
  87. end
  88. for i = 1, #self.rankPlayerIds do
  89. if self.rankPlayerIds[i] == uid then
  90. table.remove(self.rankPlayerIds,i)
  91. return
  92. end
  93. end
  94. end
  95. return TowerRankDataMgr