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