PetRankActivityData.lua 4.2 KB

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