BossOfferRewardInfo.lua 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. ---@class BossOfferRewardInfo
  2. BossOfferRewardInfo = class()
  3. local this = BossOfferRewardInfo
  4. E_MonsterShowState = {
  5. Go = enum(0),
  6. CanReceive = enum(1),
  7. HadReceive = enum(2)
  8. }
  9. E_LevelRewardState = {
  10. NotCanReceive = enum(0),
  11. CanReceive = enum(1),
  12. HadReceive = enum(2)
  13. }
  14. function this:ctor()
  15. end
  16. function this:Reset()
  17. SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.RES_BOSS_BOUNTY_DATA)
  18. SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.BOSS_BOUNTY_CHANGE)
  19. SL:UnRegisterLUAEvent(LUA_EVENT_ROLE_LOGIN)
  20. self.monsterInfo = nil
  21. self.groupIdInfo = nil
  22. end
  23. function this:Init()
  24. self.monsterInfo = {}
  25. self.groupIdInfo = {}
  26. self:RegistMessages()
  27. end
  28. function this:RegistMessages()
  29. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_BOSS_BOUNTY_DATA,self.RES_BOSS_BOUNTY_DATA,self)
  30. SL:RegisterLuaNetMsg(LuaMessageIdToClient.BOSS_BOUNTY_CHANGE,self.BOSS_BOUNTY_CHANGE,self)
  31. SL:RegisterLUAEvent(LUA_EVENT_ROLE_LOGIN,self.EnterGame,self)
  32. end
  33. function this:EnterGame()
  34. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_BOSS_BOUNTY_DATA)
  35. end
  36. ---响应boss悬赏数据
  37. ---@param message {group:number[],monster:table<string,number>}
  38. function this:RES_BOSS_BOUNTY_DATA(_,message)
  39. self.monsterInfo = message.monster or {}
  40. self.groupIdInfo = message.group or {}
  41. SL:RefreshPanelALLRedPoint("KLUISystemTopPanel")
  42. SL:onLUAEvent(LUA_EVENT_BOSS_OFFER_CHANGE)
  43. end
  44. ---响应boss悬赏数据变化
  45. ---@param message {monsterId:number,status:number}
  46. function this:BOSS_BOUNTY_CHANGE(_,message)
  47. if not self.monsterInfo then
  48. self.monsterInfo = {}
  49. end
  50. self.monsterInfo[tostring(message.monsterId)] = message.status
  51. SL:RefreshPanelALLRedPoint("KLUISystemTopPanel")
  52. SL:onLUAEvent(LUA_EVENT_BOSS_OFFER_CHANGE)
  53. end
  54. ---@return number
  55. function this:GetMonsterStateByMonserId(monserId)
  56. monserId = tostring(monserId)
  57. if not self.monsterInfo then
  58. self.monsterInfo = {}
  59. end
  60. if not self.monsterInfo[monserId] then
  61. return E_MonsterShowState.Go
  62. end
  63. return self.monsterInfo[monserId]
  64. end
  65. function this:GetLevelRewardState(level)
  66. local groupID = cfg_newarea_offerreward_post.GetGroupIdByLevel(level)
  67. if not self.groupIdInfo then
  68. self.groupIdInfo = {}
  69. end
  70. if table.contains(self.groupIdInfo,groupID) then
  71. return E_LevelRewardState.HadReceive
  72. end
  73. local levelMonsterInfo = cfg_newarea_offerreward_post.GetLevelMonsterInfo(level)
  74. for i, v in pairs(levelMonsterInfo) do
  75. if self:GetMonsterStateByMonserId(v.monsterId) == E_MonsterShowState.Go then
  76. return E_LevelRewardState.NotCanReceive
  77. end
  78. end
  79. return E_LevelRewardState.CanReceive
  80. end
  81. function this:GetCanShowLevel()
  82. local allLevel = cfg_newarea_offerreward_post.GetLevelInfo()
  83. local canShowLevel = {}
  84. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  85. for i, level in ipairs(allLevel) do
  86. if level <= playerLevel then
  87. table.insert(canShowLevel,level)
  88. else
  89. table.insert(canShowLevel,level)
  90. break
  91. end
  92. end
  93. return canShowLevel
  94. end
  95. function this:IsHasBossOfferReward()
  96. local allLevel = cfg_newarea_offerreward_post.GetLevelInfo()
  97. for i, level in ipairs(allLevel) do
  98. local levelMonsterInfo = cfg_newarea_offerreward_post.GetLevelMonsterInfo(level)
  99. for i, v in pairs(levelMonsterInfo) do
  100. if self:GetMonsterStateByMonserId(v.monsterId) == E_MonsterShowState.CanReceive then
  101. return true
  102. end
  103. end
  104. if self:GetLevelRewardState(level) == E_LevelRewardState.CanReceive then
  105. return true
  106. end
  107. end
  108. return false
  109. end
  110. ---某一个等级标签是否有可领取的物品
  111. function this:IsHasRewardInOneLevel(level)
  112. local levelMonsterInfo = cfg_newarea_offerreward_post.GetLevelMonsterInfo(level)
  113. for i, v in pairs(levelMonsterInfo) do
  114. if self:GetMonsterStateByMonserId(v.monsterId) == E_MonsterShowState.CanReceive then
  115. return true
  116. end
  117. end
  118. local state = self:GetLevelRewardState(level)
  119. if state == E_LevelRewardState.CanReceive then
  120. return true
  121. end
  122. return false
  123. end