TowerRankActivityData.lua 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. local TowerRankActivityData = class("TowerRankActivityData")
  2. local ProtocalDataNormal = require("ProtocalDataNormal")
  3. local countlimit = 10
  4. function TowerRankActivityData:ctor()
  5. self.rankData = nil
  6. self.type = Enum.RankActivitiesType.ClimbingTower
  7. end
  8. function TowerRankActivityData:Clear()
  9. self.rankData = nil
  10. end
  11. function TowerRankActivityData:RegisterNetEvents()
  12. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_TOWER_ACTIVITY_ACK,self.OnTowerActivityAck, self)
  13. end
  14. function TowerRankActivityData:QueryRankActivityData(forceOpenUI)
  15. self.forceOpenUI = forceOpenUI
  16. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_TOWER_ACTIVITY_REQ, {})
  17. end
  18. function TowerRankActivityData:OnTowerActivityAck(data)
  19. if data.error ~= Enum.NetErrorCode.ERROR_OK then return end
  20. local oldData = clone(self.rankData)
  21. self.rankData = ProtocalDataNormal.ParseTowerActivityData(data)
  22. self.rankData.rankIdx = self:GetRankIdx(self.rankData.selfRank)
  23. if oldData then
  24. ManagerContainer.RedPointSimpleMgr:RPNotify(Enum.RPNotifyType.TowerRankChanged, oldData.rankIdx ~= self.rankData.rankIdx)
  25. end
  26. self:RefreshRewardRPStatae()
  27. if self.forceOpenUI then
  28. --TODO 打开 冲榜界面
  29. if self.rankData.endTime > 0 then
  30. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIActivityTower, Enum.RankActivitiesType.ClimbingTower)
  31. self.forceOpenUI = false
  32. else
  33. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RANK_ACTIVITY_DISPLAY_NTF, Enum.RankActivitiesType.ClimbingTower, false)
  34. end
  35. end
  36. end
  37. function TowerRankActivityData:GetRankIdx(rank)
  38. local type = Enum.RankActivitiesType.ClimbingTower
  39. local idx = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityIdx(type)
  40. local cfgDatas = ManagerContainer.CfgMgr:GetRushListCfgByTypeAndIdx(type, idx)
  41. if not cfgDatas then
  42. return 0
  43. end
  44. local cfgDatas = ManagerContainer.CfgMgr:GetRushListTargetCfgByTypeAndIdx(type,idx)
  45. local rankIdx = 0
  46. if rank > 0 then
  47. for i = #cfgDatas, 1, -1 do
  48. local cfgData = cfgDatas[i]
  49. if rank <= cfgData.Rank[1][2] then
  50. rankIdx = cfgData.RankGrade
  51. end
  52. end
  53. end
  54. return rankIdx
  55. end
  56. function TowerRankActivityData:RefreshRewardRPStatae()
  57. local type = Enum.RankActivitiesType.ClimbingTower
  58. local idx = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityIdx(type)
  59. local cfgDatas = ManagerContainer.CfgMgr:GetRushListCfgByTypeAndIdx(type, idx)
  60. if not cfgDatas then
  61. ManagerContainer.RedPointSimpleMgr:RPNotify(Enum.RPNotifyType.TowerRankCanReward, false)
  62. return
  63. end
  64. local cfgDatas = ManagerContainer.CfgMgr:GetRushListTargetCfgByTypeAndIdx(type,idx)
  65. countlimit = cfgDatas[1].Rank[1][1]
  66. local rankIdx = 0
  67. if self.rankData.selfRank > 0 then
  68. for i = #cfgDatas, 1, -1 do
  69. local cfgData = cfgDatas[i]
  70. if self.rankData.selfRank <= cfgData.Rank[1][2] then
  71. rankIdx = cfgData.RankGrade
  72. end
  73. end
  74. end
  75. local stage, endTime = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityStageEndTime(Enum.RankActivitiesType.ClimbingTower)
  76. local rankRewardState = rankIdx > 0 and stage == 2 and self.rankData.selfRank > 0 and not self.rankData.rankReward
  77. local challengeRewardState = self.rankData.fightCount >= countlimit and not self.rankData.challengReward
  78. ManagerContainer.RedPointSimpleMgr:RPNotify(Enum.RPNotifyType.TowerRankCanReward, rankRewardState or challengeRewardState)
  79. end
  80. function TowerRankActivityData:OnActivityRewardAck(data)
  81. if data.error ~= Enum.NetErrorCode.ERROR_OK then return end
  82. if data.reward_type == 1 then
  83. self.rankData.challengReward = true
  84. elseif data.reward_type == 2 then
  85. self.rankData.rankReward = true
  86. end
  87. self:RefreshRewardRPStatae()
  88. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RANK_ACTIVITY_REWARD_SUCCESS_NTF, data.reward_type)
  89. CommonUtil.ACKShowRewardList(data.item_list)
  90. end
  91. function TowerRankActivityData:GetCurRankActivityData()
  92. return self.rankData
  93. end
  94. function TowerRankActivityData:SendRewardReq(type)
  95. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_RUSH_ACTIVITY_REWARD_REQ, {reward_type = type, rush_type = self.type})
  96. end
  97. function TowerRankActivityData:Destroy()
  98. self:Clear()
  99. end
  100. return TowerRankActivityData