KLRechargePanel.lua 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. ---@class KLRechargePanel:UIKmlLuaPanelBase
  2. ---@field view KLRechargePanelView
  3. local KLRechargePanel = class(UIKmlLuaPanelBase)
  4. local this =KLRechargePanel
  5. function this:AsyncLoadUI()
  6. end
  7. ---创建时调用一次
  8. function this:Init()
  9. self.goodsList = {}
  10. GUI:DataListInitData(self.view.RechargeGoodsList, function()
  11. return self:GetAllShowGoods()
  12. end,function()
  13. end,function()
  14. end, function(realIndex)
  15. self:ItemUpdateFun(realIndex)
  16. end)
  17. end
  18. --请求充值
  19. function this:BuyOnClick(_,eventData)
  20. GUIUtil.SDKPay(eventData.rechargeData,1)
  21. end
  22. function this:ItemUpdateFun(realIndex)
  23. local data = self.goodsList[realIndex + 1]
  24. local FirstReward = GUI:GetChildControl(self.view.RechargeGoodsList, realIndex, 'FirstReward')
  25. local showItems = GUI:GetChildControl(self.view.RechargeGoodsList, realIndex, 'showItems')
  26. local img_icon = GUI:GetChildControl(self.view.RechargeGoodsList, realIndex, 'img_icon')
  27. local img_reward = GUI:GetChildControl(self.view.RechargeGoodsList, realIndex, 'img_reward')
  28. local txt_reward = GUI:GetChildControl(self.view.RechargeGoodsList, realIndex, 'txt_reward')
  29. local btn_buy = GUI:GetChildControl(self.view.RechargeGoodsList, realIndex, 'btn_buy')
  30. --是否是首充
  31. GUI:SetActive(FirstReward,data.isShowFirst)
  32. --展示首充道具
  33. if data.isShowFirst then
  34. local itemRewards = {}
  35. if data.isRewardFirst then
  36. itemRewards = SL:GetConfig('cfg_recharge_gear',data.rechargeData.parameter).firstReward --首次首充
  37. else
  38. itemRewards = SL:GetConfig('cfg_recharge_gear',data.rechargeData.parameter).resetReward --二次首充
  39. end
  40. local showRewards = {}
  41. for _, v in pairs(itemRewards) do
  42. if v[1] == SL:MeData_GetCareer().baseCareer then--基础职业
  43. table.insert(showRewards,v)
  44. end
  45. end
  46. GUI:HideAllChilds(showItems)
  47. for i = 1, table.count(showRewards) do
  48. local itemId = showRewards[i][2]
  49. local item = GUI:Item_Create(showItems, {
  50. width = "50",
  51. height = "50",
  52. itemid = itemId,
  53. mfixsize = "80,80",
  54. tips = "1",
  55. itemcustomcount = Misc.GetSampleNumberString(showRewards[i][3])
  56. })
  57. GUI:AddOnClickEvent(item, self, function()
  58. SL:OpenTips(nil, itemId)
  59. end)
  60. end
  61. end
  62. --加载道具图片
  63. GUI:Image_loadTexture(img_icon, SL:GetConfig('cfg_recharge_gear',data.rechargeData.parameter).name,"Atlas/QJ5_UIShopMainPanel.spriteatlas")
  64. --获得道具图片
  65. local itemData = data.rechargeData.gain[1]
  66. local icon = SL:GetConfig("cfg_item", itemData[1]).looks
  67. GUI:Image_loadTexture(img_reward, icon,"Atlas/QJ5_ItemLooksIcon.spriteatlas")
  68. --获得道具数量
  69. GUI:Text_setString(txt_reward, tostring(itemData[2]))
  70. --请求购买
  71. local price = "¥"..tostring(data.rechargeData.amount)
  72. GUI:Button_setTitleText(btn_buy,price)
  73. GUI:AddOnClickEvent(btn_buy,self,self.BuyOnClick,{ rechargeData = data.rechargeData})
  74. end
  75. function this:GetAllShowGoods()
  76. return table.count(self.goodsList)
  77. end
  78. ---注册UI事件和服务器消息
  79. function this:RegistEvents()
  80. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_RECHARGE_ACTION,self.RES_RECHARGE_ACTION,self)
  81. end
  82. function this:RES_RECHARGE_ACTION(_,message)
  83. if message.type == "1" then
  84. self:RefreshShowGoodInfoMess(_, message.data.list)
  85. if self.refreshTimer then
  86. SL:UnSchedule(self.refreshTimer)
  87. self.refreshTimer = nil
  88. end
  89. local endDayTime = tonumber(message.data.endDayTime)*1000
  90. local leftTime = endDayTime - Time.GetServerTime()
  91. GUI:setVisible(self.view.countDownRoot,leftTime>0)
  92. if leftTime>0 then
  93. self.refreshTimer = SL:Schedule(self.refreshTimer,0,1,-1,function()
  94. local leftTime1 = endDayTime - Time.GetServerTime()
  95. if leftTime1 <= 0 then
  96. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE_ACTION, {type=1, action="panel"})
  97. SL:UnSchedule(self.refreshTimer)
  98. self.refreshTimer = nil
  99. else
  100. local time_str = "<color=#ff2323>"..GUIUtil.FormatTimeDHM_S(leftTime1//1000) .."</color>"
  101. GUI:Text_setString(self.view.refreshTime,time_str)
  102. end
  103. end)
  104. end
  105. end
  106. end
  107. ---@param message
  108. --rechargeId:number cfg_recharge表内id
  109. --isShowFirst:boolean 是否需要展示首充奖励 true展示
  110. --isRewardFirst:boolean 首次首充还是重置首充 true首次首充
  111. function this:RefreshShowGoodInfoMess(_,message)
  112. self.goodsList = {}
  113. local data = message
  114. local allGoods = {}
  115. for _, v in pairs(data) do
  116. if type(v) == "table" then
  117. v.rechargeData = SL:GetConfig("cfg_recharge",tonumber(v.rechargeId))
  118. table.insert(allGoods,v)
  119. end
  120. end
  121. table.sort(allGoods,function(a,b)
  122. return a.rechargeData.amount < b.rechargeData.amount --按照价格高低排序
  123. end)
  124. self.goodsList = allGoods
  125. GUI:DataListUpdateData(self.view.RechargeGoodsList)
  126. end
  127. ---界面显示时调用一次
  128. function this:Show()
  129. end
  130. ---创建或者刷新界面数据时调用
  131. function this:Refresh()
  132. --获取标题图片
  133. local pic = SL:GetConfig("cfg_global", 16001)
  134. GUI:Image_loadTexture(self.view.title, pic.value,"Atlas/QJ5_UIShopMainPanel.spriteatlas")
  135. end
  136. function this:Close()
  137. if self.refreshTimer then
  138. SL:UnSchedule(self.refreshTimer)
  139. self.refreshTimer = nil
  140. end
  141. end
  142. return this