UIGuildHuntMasterRewardView.lua 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. local UIGuildHuntMasterRewardView = require("UIGuild/UIGuildHuntMasterRewardView_Generate")
  2. function UIGuildHuntMasterRewardView:OnAwake(data)
  3. self.controller = require("UIGuild/UIGuildHuntMasterRewardCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UIGuildHuntMasterRewardView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_HUNT_MASTER_REWARD_CHANGED, self, self.OnGuildHuntMasterRewardChanged)
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_DISBAND_SUCCESS, self, self.OnGuildDisBandSuccess)
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_QUIT_SUCCESS, self, self.OnGuildQuitSuccess)
  11. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_KICKOUT_SUCCESS, self, self.OnGuildKickoutSuccess)
  12. end
  13. function UIGuildHuntMasterRewardView:FillContent(data, uiBase)
  14. self.uiBase = uiBase
  15. local gameObject = self.uiBase:GetRoot()
  16. if gameObject ~= nil then
  17. self.gameObject = gameObject
  18. self.transform = gameObject.transform
  19. end
  20. self:InitGenerate(self.transform, data)
  21. self:Init()
  22. end
  23. function UIGuildHuntMasterRewardView:Init()
  24. self:RefreshView()
  25. -- 从服务器获得当前奖励级别
  26. local errorCode = self.controller:SendGuildMasterRewardReq()
  27. if errorCode ~= 0 then
  28. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  29. end
  30. end
  31. function UIGuildHuntMasterRewardView:RemoveEventListener()
  32. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  33. end
  34. function UIGuildHuntMasterRewardView:AddUIEventListener()
  35. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnClickCancelBtn)
  36. self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickCancelBtn)
  37. end
  38. function UIGuildHuntMasterRewardView:OnHide()
  39. end
  40. function UIGuildHuntMasterRewardView:OnShow(data)
  41. self.controller:SetData(data)
  42. end
  43. function UIGuildHuntMasterRewardView:OnClose()
  44. end
  45. function UIGuildHuntMasterRewardView:OnDispose()
  46. self.controller:OnDispose()
  47. end
  48. function UIGuildHuntMasterRewardView:OnGuildDisBandSuccess()
  49. self:UIClose()
  50. end
  51. function UIGuildHuntMasterRewardView:OnGuildQuitSuccess()
  52. self:UIClose()
  53. end
  54. function UIGuildHuntMasterRewardView:OnGuildKickoutSuccess()
  55. self:UIClose()
  56. end
  57. function UIGuildHuntMasterRewardView:OnGuildHuntMasterRewardChanged(bossId)
  58. if self.controller:GetBossId() ~= bossId then return end
  59. self:RefreshView()
  60. end
  61. function UIGuildHuntMasterRewardView:OnClickCancelBtn()
  62. self:UIClose()
  63. end
  64. function UIGuildHuntMasterRewardView:OnClickHeadItem(_, params)
  65. local uid = params[0]
  66. ManagerContainer.LuaUIMgr:OpenRoleMessagePanel(uid)
  67. end
  68. function UIGuildHuntMasterRewardView:OnClickIconItem(_, params)
  69. local data = params[0]
  70. ManagerContainer.LuaUIMgr:OpenTips(data)
  71. end
  72. function UIGuildHuntMasterRewardView:RefreshView()
  73. local data = self.controller:GetAwardData()
  74. if nil == data then
  75. self.emptyTips:SetActive(false)
  76. self.notEmpty:SetActive(false)
  77. return
  78. end
  79. if table_is_empty(data) or table_is_empty(data.playerBrief) or data.damage <= 0 then
  80. self.emptyTips:SetActive(true)
  81. self.notEmpty:SetActive(false)
  82. self.desTxt.text.text = string.formatbykey('GuildHuntTip1')
  83. return
  84. end
  85. self.emptyTips:SetActive(false)
  86. self.notEmpty:SetActive(true)
  87. local playerBrief = data.playerBrief
  88. local heroData = nil
  89. local headFrame = nil
  90. local uid = nil
  91. if playerBrief then
  92. uid = playerBrief.uid
  93. headFrame = playerBrief.headFrame
  94. if int64.equals(uid, ManagerContainer.DataMgr.UserData:GetUserId()) then
  95. headFrame = ManagerContainer.DataMgr.UserData:GetHeadFrameId()
  96. end
  97. local jobCfg = ManagerContainer.CfgMgr:GetJobDataById(playerBrief.configId)
  98. local jobIcon = ''
  99. if jobCfg then
  100. jobIcon = jobCfg.JobIcon
  101. end
  102. heroData = {Level = playerBrief.level, ProfessionIcon = jobIcon, HeadIcon = playerBrief.headPortraitName, IsHero = true}
  103. self.topDamageMember.nameTxt.text.text = tostring(playerBrief.nickName)
  104. else
  105. self.topDamageMember.nameTxt.text.text = ''
  106. end
  107. CommonUtil.SetPlayerHeadAndFrame(self, self.topDamageMember.headItem, heroData, false, headFrame, self, self.OnClickHeadItem, uid)
  108. self.topDamageMember.damageTxt.text.text = tostring(data.damage)
  109. local awards = self:GetMasterRewards(data.damage)
  110. if not awards then
  111. self.awardScrollView:SetActive(false)
  112. return
  113. end
  114. CommonUtil.LoopGridViewEleCreateNew(self, self.awardScrollView.loopHorizontalScrollRect, nil, awards, 0, self, self.UpdateAwardItem)
  115. end
  116. function UIGuildHuntMasterRewardView:UpdateAwardItem(itemLua, idx, itemData)
  117. if not itemLua or not itemData then return end
  118. CommonUtil.UpdateItemPrefab(self, itemLua, {cfgId = itemData[1], num = itemData[2]}, Enum.ItemIEnterType.Bag, self, self.OnClickIconItem)
  119. end
  120. function UIGuildHuntMasterRewardView:GetMasterRewards(damage)
  121. local bossId = self.controller:GetBossId()
  122. local bossCfgData = ManagerContainer.CfgMgr:GetGuildHuntBossCfgById(bossId)
  123. if not bossCfgData then return nil end
  124. if bossCfgData.BossType ~= Enum.GuildHuntBossType.Normal then
  125. return nil
  126. end
  127. local damageSegment = bossCfgData.DamageSegment
  128. if not damageSegment or damageSegment <= 0 then
  129. return nil
  130. end
  131. local rewardRanges = bossCfgData.RewardRange
  132. if not rewardRanges then
  133. return nil
  134. end
  135. local rewardRangeLength = #rewardRanges
  136. if rewardRangeLength < damageSegment then
  137. return nil
  138. end
  139. local masterRewards = bossCfgData.MasterReward
  140. if not masterRewards then
  141. return nil
  142. end
  143. local masterRewardLength = #masterRewards
  144. if masterRewardLength < damageSegment then
  145. return nil
  146. end
  147. local validIdx = nil
  148. for i = 1, rewardRangeLength do
  149. local rewardRange = rewardRanges[i]
  150. if damage < rewardRange[1] then
  151. break
  152. end
  153. validIdx = i
  154. if damage <= rewardRange[2] then
  155. break
  156. end
  157. end
  158. if not validIdx then return nil end
  159. local awardCfgId = masterRewards[validIdx]
  160. if not awardCfgId then return nil end
  161. local awardCfgData = ManagerContainer.CfgMgr:GetGuildHuntBossAwardCfgById(awardCfgId)
  162. if not awardCfgData then return nil end
  163. return awardCfgData.Reward
  164. end
  165. return UIGuildHuntMasterRewardView