CollectionBookData.lua 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. local CollectionBookData = class("CardHandBook", require("DataBase"))
  2. local BitUtil = require("BitUtil")
  3. function CollectionBookData:ctor()
  4. self.data = {}
  5. if not self.data.qualityCardDatas then
  6. self.data.qualityCardDatas = {}
  7. end
  8. if not self.data.handBookMaps then
  9. self.data.handBookMaps = {}
  10. end
  11. if not self.data.handBookQualityCounts then
  12. self.data.handBookQualityCounts = {}
  13. end
  14. end
  15. function CollectionBookData:InitDatas(data)
  16. self:RefreshDatas(data)
  17. end
  18. function CollectionBookData:RefreshDatas(data)
  19. for _,v in pairs(data) do
  20. if self.data.qualityCardDatas[v.card_quality] == nil then
  21. self.data.qualityCardDatas[v.card_quality] = {}
  22. end
  23. for _,v1 in pairs(v.card_book) do
  24. local data1 = ProtocalDataNormal.ParseCardHandBook(v1)
  25. self.data.handBookMaps[data1.cardId] = data1
  26. self.data.qualityCardDatas[v.card_quality][data1.cardId] = data1
  27. end
  28. end
  29. local rpState = false
  30. for k,v in pairs(self.data.qualityCardDatas) do
  31. local hasCount = 0
  32. local count = 0
  33. for _,v1 in pairs(v) do
  34. hasCount = hasCount + 1
  35. for i = 1,v1.cardLevel do
  36. local rewarded = BitUtil.RshiftNumBandOne(v1.rewardRec, i - 1) == 1
  37. if not rewarded then
  38. count = count + 1
  39. break
  40. end
  41. end
  42. end
  43. if not rpState and count > 0 then
  44. rpState = true
  45. end
  46. self.data.handBookQualityCounts[k] = hasCount
  47. end
  48. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.CardCollect, rpState)
  49. end
  50. function CollectionBookData:QueryCardHandBook(pageId)
  51. self.data.queryPageId = pageId
  52. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CARD_COLLECT_INFO_REQ, {})
  53. end
  54. function CollectionBookData:SendCardHandBookReward(id, lv,isGetAll)
  55. if isGetAll == nil then
  56. isGetAll = false
  57. end
  58. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CARD_COLLECT_REWARD_REQ, {card_id = id, level = lv,get_all = isGetAll})
  59. end
  60. function CollectionBookData:QueryCardRank(id)
  61. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CARD_COLLECTION_RANK_REQ, {card_id = id})
  62. end
  63. function CollectionBookData:GetCardHandBookQualityCountById(id)
  64. return self.data.handBookQualityCounts[id] or 0
  65. end
  66. function CollectionBookData:GetCollectionBookDataById(id)
  67. return self.data.handBookMaps[id]
  68. end
  69. function CollectionBookData:RegisterNetEvents()
  70. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CARD_COLLECT_INFO_ACK, function(data)
  71. if data.error == Enum.NetErrorCode.ERROR_OK then
  72. self:InitDatas(data.card_collect)
  73. if self.data.queryPageId == Enum.UIPageName.UIMainCity1 then
  74. self.data.queryPageId = nil
  75. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UICardHandBook, nil, Enum.UIPageName.UIMainCity1)
  76. end
  77. end
  78. end)
  79. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CARD_COLLECT_CHANGE_NTF, function(data)
  80. self:RefreshDatas(data.card_collect)
  81. end)
  82. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CARD_COLLECT_REWARD_ACK, function(data)
  83. if data.error == Enum.NetErrorCode.ERROR_OK then
  84. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CARD_HANDBOOK_REWARD_REFRESH, data.card_id)
  85. CommonUtil.ACKShowRewardList(data.reward_list)
  86. end
  87. end)
  88. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CARD_COLLECTION_RANK_ACK, function(data)
  89. if data.error == Enum.NetErrorCode.ERROR_OK then
  90. if data.player_info then
  91. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CARD_HANDBOOK_RANK_REFRESH, data.player_info, data.achievement_time)
  92. end
  93. end
  94. end)
  95. end
  96. function CollectionBookData:Clear()
  97. self.data = {}
  98. self.data.qualityCardDatas = {}
  99. self.data.handBookMaps = {}
  100. self.data.handBookQualityCounts = {}
  101. end
  102. function CollectionBookData:Destroy()
  103. if self.Clear then
  104. self:Clear()
  105. end
  106. self:UnRegisterNetEvents()
  107. end
  108. function CollectionBookData:UnRegisterNetEvents()
  109. end
  110. return CollectionBookData