KLSettlementPanel.lua 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. ---@class KLSettlementPanel:UIKmlLuaPanelBase
  2. ---@field view KLSettlementPanelView
  3. local KLSettlementPanel = class(UIKmlLuaPanelBase)
  4. local this =KLSettlementPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. self.rewardData = {}
  8. self.reward_all_item = {}
  9. GUI:DataListInitData(self.view.select_item_list,function()
  10. return self:RewardDataListItemCountFunc()
  11. end,function(realIndex)
  12. return self:RewardDataListItemGetFunc(realIndex)
  13. end,function(realIndex, kmlcontrol)
  14. return self:RewardDataListItemInitFunc(realIndex, kmlcontrol)
  15. end, function(realIndex, kmlcontrol)
  16. return self:RewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  17. end)
  18. end
  19. ---创建或者刷新界面数据时调用
  20. function this:Refresh()
  21. self.maxNumber = self.args.leftCount
  22. self.curSelectReward = 1
  23. GUI:Text_setString(self.view.killMonsterCount,tostring(self.args.kill))
  24. GUI:Text_setString(self.view.gainExprience,tostring(GUIUtil.FormatNumber(self.args.exp,true)))
  25. self:RefreshRewardOption()
  26. end
  27. ---注册UI事件和服务器消息
  28. function this:RegistEvents()
  29. SL:RegisterLUAEvent(SELECT_REWARD_TYPE,self.SELECT_REWARD_TYPE,self)
  30. SL:RegisterLUAEvent(LUA_EVENT_BAG_CHANGE_AFTER,self.LUA_EVENT_BAG_CHANGE_AFTER,self)
  31. GUI:AddOnClickEvent(self.view.bgClose,self,self.OnclickCloseBtn)
  32. GUI:AddOnClickEvent(self.view.closeBtn,self,self.OnclickCloseBtn)
  33. GUI:AddOnClickEvent(self.view.okBtn,self,self.OnclickOkBtn)
  34. GUI:AddOnClickEvent(self.view.addbtn,self,self.OnclickaddBtn)
  35. GUI:AddOnClickEvent(self.view.itemBg,self,self.OnCliCkTicketBtn)
  36. end
  37. function this:SELECT_REWARD_TYPE(_,data)
  38. self.curSelectRewardData = data
  39. self.curSelectReward = data.index
  40. self.costId = data.costId
  41. self:RefreshReward(data.costId,data.costItemCount,data.costCount)
  42. end
  43. function this:LUA_EVENT_BAG_CHANGE_AFTER()
  44. if self.curSelectRewardData then
  45. self:RefreshReward(self.curSelectRewardData.costId,self.curSelectRewardData.costItemCount,self.curSelectRewardData.costCount)
  46. end
  47. end
  48. function this:OnclickCloseBtn()
  49. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLSettlement/KLSettlementPanel")
  50. end
  51. function this:OnclickOkBtn()
  52. if self.tips and self.curSelectReward~=1 then
  53. SL:TipMessage(self.tips,1,NoticeType.NoticeMid)
  54. if not self.isMeetItemCount then
  55. SL:CommonItemGetPath(nil,self.costId)
  56. end
  57. return
  58. end
  59. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLSettlement/KLSettlementPanel")
  60. end
  61. function this:OnclickaddBtn()
  62. SL:CommonItemGetPath(nil,self.costId)
  63. end
  64. function this:OnCliCkTicketBtn()
  65. SL:OpenTips(nil, self.costId)
  66. end
  67. function this:RefreshRewardOption()
  68. local globalId = 10001005
  69. if SL:HasConfig("cfg_rep",self.args.configId,"id") then
  70. ---@type cfg_rep_column
  71. local tbl = SL:GetConfig("cfg_rep",self.args.configId,"id")
  72. if tbl.type ~= EActivityType.DevilSquare then
  73. globalId = 11001006
  74. end
  75. end
  76. ---@type cfg_repGlobal_column
  77. local tbl = SL:GetConfigMultiKeys("cfg_repGlobal",globalId,"id")
  78. local data = tbl.value
  79. data = "1|"..data
  80. self.rewardData = string.split(data,"|")
  81. GUI:DataListUpdateData(self.view.select_item_list)
  82. local w = 118*#self.rewardData
  83. local count = #self.rewardData - 4
  84. GUI:setContentSize(self.view.select_layout,w,45)
  85. GUI:setPositionX(self.view.select_layout,count<=0 and 0 or (count*118/2))
  86. end
  87. function this:RewardDataListItemCountFunc()
  88. return #self.rewardData
  89. end
  90. function this:RewardDataListItemGetFunc(realIndex)
  91. local data = self.rewardData[realIndex + 1]
  92. local message = {index = tonumber(data),costId = 0,costItemCount = 0,costCount = 0}
  93. if tonumber(data) ~= 1 then
  94. data = string.split(data,"#")
  95. message = {index=tonumber(data[1]),costId =tonumber(data[2]),costItemCount = tonumber(data[3]),costCount = tonumber(data[4])}
  96. end
  97. local item = GUI:UIPanel_Open("dev/outui/Activity/Item/KLSelectReward/KLSelectRewardItem",self.view.select_item_list,self,message,true)
  98. self.reward_all_item[item.view.root] = item
  99. return item.view.root
  100. end
  101. function this:RewardDataListItemInitFunc(realIndex, kmlcontrol)
  102. end
  103. function this:RewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  104. local data = self.rewardData[realIndex + 1]
  105. local message = {index = tonumber(data),costId = 0,costItemCount = 0}
  106. if tonumber(data) ~= 1 then
  107. data = string.split(data,"#")
  108. message = {index=tonumber(data[1]),costId =tonumber(data[2]),costItemCount = tonumber(data[3]),costCount = tonumber(data[4])}
  109. end
  110. self.reward_all_item[kmlcontrol]:RefreshItem(message)
  111. end
  112. function this:RefreshReward(costId,costItemCount,costCount)
  113. self.tips = nil
  114. self.isMeetItemCount = true
  115. if self.curSelectReward ~= 1 then
  116. local isMeet = self.maxNumber >= costCount
  117. local color = isMeet and "" or "#ff2323"
  118. local leftCountStr = "消耗血色城堡/恶魔广场活动次数:".. self.maxNumber .."/".. GUIUtil.GetColorText(costCount,color)
  119. if costCount > self.maxNumber then
  120. self.tips = "次数不足"
  121. end
  122. local ownerTicket = SL:GetBagItemCount(costId)
  123. isMeet = costItemCount <= ownerTicket
  124. color = isMeet and "#28E529" or "#ff2323"
  125. GUI:Text_setString(self.view.costItemCountTxt,GUIUtil.GetColorText(ownerTicket.."/"..costItemCount,color))
  126. GUI:Item_setItemId(self.view.costItem,costId)
  127. GUI:setVisible(self.view.addbtn,self,not isMeet)
  128. if not self.tips and not isMeet then
  129. self.tips = "道具不足"
  130. self.isMeetItemCount = false
  131. end
  132. GUI:Text_setString(self.view.costEnterCountTxt,leftCountStr)
  133. GUI:setContentSize(self.view.bg,549,560)
  134. GUI:setPositionY(self.view.okBtn,-137)
  135. else
  136. GUI:setContentSize(self.view.bg,549,465)
  137. GUI:setPositionY(self.view.okBtn,-45)
  138. end
  139. GUI:setVisible(self.view.costContainer,self.curSelectReward ~= 1)
  140. GUI:setVisible(self.view.costEnterCountTxt,self.curSelectReward ~= 1)
  141. end
  142. function this:Close()
  143. if SL:HasConfig("cfg_rep",self.args.configId,"id") then
  144. if self.tips and self.curSelectReward~=1 then
  145. SL:TipMessage(self.tips,1,NoticeType.NoticeMid)
  146. return
  147. end
  148. ---@type cfg_rep_column
  149. local tbl = SL:GetConfig("cfg_rep",self.args.configId,"id")
  150. if tbl.type == EActivityType.DevilSquare then
  151. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECIVE_DEVIL_SQUARE_REWARD,self.curSelectReward)
  152. else
  153. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECIVE_BLOODY_CASTLE_SETTLEMENT,self.curSelectReward)
  154. end
  155. end
  156. end
  157. return this