KLBossOfferRewardPanel.lua 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. ---@class KLBossOfferRewardPanel:UIKmlLuaPanelBase
  2. ---@field view KLBossOfferRewardPanelView
  3. ---@field bossLevelBtnItem KLBossOfferRewardBtnItem[]
  4. ---@field select_btn_level number 选择的按钮对应的等级
  5. ---@field select_btn KLBossOfferRewardBtnItem
  6. ---@field bossLevelModelItem KLBossOfferRewardModelItem[]
  7. local KLBossOfferRewardPanel = class(UIKmlLuaPanelBase)
  8. local this =KLBossOfferRewardPanel
  9. E_ReceiveState = {
  10. CanReceive = enum(0),
  11. HadReceive = enum(1)
  12. }
  13. ---创建时调用一次
  14. function this:Init()
  15. SL.HideMainPanel()
  16. GUI:DataListInitData(self.view.levelList,function()
  17. return self:BossBtnDataListItemCountFunc()
  18. end,function(realIndex)
  19. return self:BossBtnDataListItemGetFunc(realIndex)
  20. end,function(realIndex, kmlcontrol)
  21. return self:BossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  22. end, function(realIndex, kmlcontrol)
  23. return self:BossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  24. end)
  25. self.bossLevelBtnItem = {}
  26. GUI:DataListInitData(self.view.bossDataList,function()
  27. return self:BossDataListItemCountFunc()
  28. end,function(realIndex)
  29. return self:BossDataListItemGetFunc(realIndex)
  30. end,function(realIndex, kmlcontrol)
  31. return self:BossDataListItemInitFunc(realIndex, kmlcontrol)
  32. end, function(realIndex, kmlcontrol)
  33. return self:BossDataListItemUpdateFunc(realIndex, kmlcontrol)
  34. end)
  35. self.bossLevelModelItem = {}
  36. GUI:DataListInitData(self.view.bossRewardList,function()
  37. return self:BossRewardDataListItemCountFunc()
  38. end,function(realIndex)
  39. return self:BossRewardDataListItemGetFunc(realIndex)
  40. end,function(realIndex, kmlcontrol)
  41. return self:BossRewardDataListItemInitFunc(realIndex, kmlcontrol)
  42. end, function(realIndex, kmlcontrol)
  43. return self:BossRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  44. end)
  45. self.bossRewardItem = {}
  46. end
  47. function this:BossBtnDataListItemCountFunc()
  48. return #self.allBossLevelData
  49. end
  50. function this:BossBtnDataListItemGetFunc(realIndex)
  51. local item = GUI:UIPanel_Open("dev/outui/BossOfferReward/Item/KLBossOfferRewardBtn/KLBossOfferRewardBtnItem",self.view.levelList,self,{},true)
  52. self.bossLevelBtnItem[item.view.root] = item
  53. return item.view.root
  54. end
  55. function this:BossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  56. end
  57. function this:BossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  58. local data = self.allBossLevelData[realIndex + 1]
  59. self.bossLevelBtnItem[kmlcontrol]:RefreshItem(data,self.select_btn_level,self)
  60. if data == self.select_btn_level then
  61. self.select_btn = self.bossLevelBtnItem[kmlcontrol]
  62. end
  63. end
  64. function this:BossDataListItemCountFunc()
  65. return #self.bossModelShowData
  66. end
  67. function this:BossDataListItemGetFunc(realIndex)
  68. local item = GUI:UIPanel_Open("dev/outui/BossOfferReward/Item/KLBossOfferRewardModel/KLBossOfferRewardModelItem",self.view.bossDataList,self,{},true)
  69. self.bossLevelModelItem[item.view.root] = item
  70. return item.view.root
  71. end
  72. function this:BossDataListItemInitFunc(realIndex, kmlcontrol)
  73. end
  74. function this:BossDataListItemUpdateFunc(realIndex, kmlcontrol)
  75. local data = self.bossModelShowData[realIndex + 1]
  76. self.bossLevelModelItem[kmlcontrol]:RefreshItem(data)
  77. end
  78. function this:BossRewardDataListItemCountFunc()
  79. return #self.bossRewardData
  80. end
  81. function this:BossRewardDataListItemGetFunc(realIndex)
  82. local data = self.bossRewardData[realIndex + 1]
  83. local item = GUI:Item_Create(self.view.bossRewardList,{
  84. width = "60",
  85. height = "60",
  86. itemid = data[1],
  87. mfixsize = "60,60",
  88. tips = "1",
  89. itemcustomcount = SL:GetSimpleNumber(data[2],0),
  90. textcolor = "#FBD994"
  91. })
  92. GUI:AddOnClickEvent(item,self,function()
  93. SL:OpenTips(nil, data[1])
  94. end)
  95. self.bossRewardItem[item] = item
  96. return item
  97. end
  98. function this:BossRewardDataListItemInitFunc(realIndex, kmlcontrol)
  99. end
  100. function this:BossRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  101. local data = self.bossRewardData[realIndex + 1]
  102. local item = self.bossRewardItem[kmlcontrol]
  103. GUI:Item_UpdataData(item,{
  104. itemid = data[1],
  105. itemcustomcount = SL:GetSimpleNumber(data[2],0),
  106. })
  107. GUI:AddOnClickEvent(item,self,function()
  108. SL:OpenTips(nil, data[1])
  109. end)
  110. end
  111. ---创建或者刷新界面数据时调用
  112. function this:Refresh()
  113. self.bossModelShowData = {}
  114. self.allBossLevelData = InfoManager.bossOfferRewardInfo:GetCanShowLevel()
  115. self:InitUIShow()
  116. self:ButtomReceiveBtnState()
  117. end
  118. function this:InitUIShow()
  119. GUI:setVisible(self.view.btn_reward,false)
  120. GUI:setVisible(self.view.img_all_receive,false)
  121. self:InitSelectBtn()
  122. end
  123. function this:InitSelectBtn()
  124. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  125. --local playerLevel = 60
  126. self.select_btn_level = nil
  127. local index = 0
  128. for i, level in ipairs(self.allBossLevelData) do
  129. if not self.select_btn_level then
  130. self.select_btn_level = level
  131. index = i-1
  132. else
  133. if level <= playerLevel and level > self.select_btn_level then
  134. self.select_btn_level = level
  135. index = i-1
  136. end
  137. end
  138. end
  139. self:RefreshRightList()
  140. end
  141. function this:RefreshRightList()
  142. local groupInfo = cfg_newarea_offerreward_post.GetGroupInfo()
  143. local levelRewardInfo = cfg_newarea_offerreward_post.GetGroupRewardInfo()
  144. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  145. if playerLevel >= self.select_btn_level then
  146. self.bossModelShowData = groupInfo[self.select_btn_level]
  147. GUI:setVisible(self.view.txt_lock,false)
  148. else
  149. self.bossModelShowData = {}
  150. GUI:setVisible(self.view.txt_lock,true)
  151. local levelStr = SL:GetColorText(string.format("%d级",self.select_btn_level),SL:GetColorCfg(271).color)
  152. GUI:Text_setString(self.view.txt_lock,table.concat{"等级达到",levelStr,"解锁本层悬赏"})
  153. end
  154. self.bossRewardData = levelRewardInfo[self.select_btn_level]
  155. self:SortModelShowData()
  156. GUI:DataListUpdateData(self.view.levelList)
  157. GUI:DataListUpdateData(self.view.bossDataList)
  158. GUI:DataListUpdateData(self.view.bossRewardList)
  159. GUI:SetScrollView_scrollpos(self.view.levelContent,"1")
  160. end
  161. function this:SortModelShowData()
  162. table.sort(self.bossModelShowData,function(a, b)
  163. local status_a = InfoManager.bossOfferRewardInfo:GetMonsterStateByMonserId(a.monsterId)
  164. local status_b = InfoManager.bossOfferRewardInfo:GetMonsterStateByMonserId(b.monsterId)
  165. local id_a = cfg_newarea_offerreward_post.GetCfgByMonsterId(a.monsterId).id
  166. local id_b = cfg_newarea_offerreward_post.GetCfgByMonsterId(b.monsterId).id
  167. if status_a == E_MonsterShowState.CanReceive and status_b == E_MonsterShowState.CanReceive then
  168. if status_a == status_b then
  169. return id_a < id_b
  170. end
  171. end
  172. if status_a == E_MonsterShowState.CanReceive then
  173. return true
  174. end
  175. if status_b == E_MonsterShowState.CanReceive then
  176. return false
  177. end
  178. if status_a == E_MonsterShowState.HadReceive and status_b == E_MonsterShowState.HadReceive then
  179. if status_a == status_b then
  180. return id_a < id_b
  181. end
  182. end
  183. if status_a == E_MonsterShowState.HadReceive then
  184. return false
  185. end
  186. if status_b == E_MonsterShowState.HadReceive then
  187. return true
  188. end
  189. return id_a < id_b
  190. end)
  191. end
  192. ---底部领取按钮状态展示
  193. function this:ButtomReceiveBtnState()
  194. local state = InfoManager.bossOfferRewardInfo:GetLevelRewardState(self.select_btn_level)
  195. if state == E_LevelRewardState.HadReceive then
  196. GUI:setVisible(self.view.img_all_receive,true)
  197. GUI:setVisible(self.view.btn_reward,false)
  198. else
  199. GUI:setVisible(self.view.img_all_receive,false)
  200. GUI:setVisible(self.view.btn_reward,true)
  201. end
  202. end
  203. function this:HideSelectLevel()
  204. self.select_btn:HideItem()
  205. end
  206. function this:SelectLevel(level,btn)
  207. self.select_btn = btn
  208. self.select_btn_level = level
  209. self:RefreshRightList()
  210. self:ButtomReceiveBtnState()
  211. end
  212. ---注册UI事件和服务器消息
  213. function this:RegistEvents()
  214. GUI:AddOnClickEvent(self.view.btn_close,self,self.CloseBtn)
  215. GUI:AddOnClickEvent(self.view.btn_reward,self,self.RewardBtn)
  216. SL:RegisterLUAEvent(LUA_EVENT_BOSS_OFFER_CHANGE,self.BossOfferDataChange,self)
  217. end
  218. function this:CloseBtn()
  219. GUI:UIPanel_Close("dev/outui/BossOfferReward/Panel/KLBossOfferReward/KLBossOfferRewardPanel")
  220. SL.ShowMainPanel()
  221. end
  222. function this:RewardBtn()
  223. local state = InfoManager.bossOfferRewardInfo:GetLevelRewardState(self.select_btn_level)
  224. if state == E_LevelRewardState.NotCanReceive then
  225. SL:TipMessage("完成所有".. self.select_btn_level .. "级悬赏任务后领取", 3, NoticeType.NoticeMid )
  226. else
  227. local _group = cfg_newarea_offerreward_post.GetGroupIdByLevel(self.select_btn_level)
  228. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_BOUNTY_GROUP_REWARD,{id = _group })
  229. end
  230. end
  231. function this:BossOfferDataChange()
  232. self:RefreshRightList()
  233. self:ButtomReceiveBtnState()
  234. end
  235. function this:Close()
  236. self.allBossLevelData = nil
  237. self.bossRewardData = nil
  238. self.bossModelShowData = nil
  239. end
  240. return this