KLLevelRewardItem.lua 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. ---@class KLLevelRewardItem:UIKmlLuaPanelBase
  2. ---@field view KLLevelRewardItemView
  3. local KLLevelRewardItem = class(UIKmlLuaPanelBase)
  4. local this =KLLevelRewardItem
  5. --等级奖励的一条
  6. ---创建时调用一次
  7. function this:Init()
  8. --道具奖励列表
  9. GUI:DataListInitData(self.view.RewardItemDatalist, function()
  10. return self:RewardItemCountFunc()
  11. end, function(realIndex)
  12. return self:RewardItemGetFunc(realIndex)
  13. end, function(realIndex, kmlcontrol)
  14. return self:RewardItemInitFunc(realIndex, kmlcontrol)
  15. end, function(realIndex, kmlcontrol)
  16. return self:RewardItemUpdateFunc(realIndex, kmlcontrol)
  17. end)
  18. self.Reward_Item_all_item = {}
  19. end
  20. --region 道具奖励列表
  21. function this:RewardItemCountFunc()
  22. return #self.allItemData
  23. end
  24. function this:RewardItemGetFunc(realIndex)
  25. local itemData = self.allItemData[realIndex + 1]
  26. local item = GUI:UIPanel_Open("dev/outui/LevelReward/Item/KLLevelRewardItem/KLLevelRewardItemItem",self.view.RewardItemDatalist,self,itemData,true)
  27. self.Reward_Item_all_item[realIndex + 1] = item
  28. return item.view.root
  29. end
  30. function this:RewardItemInitFunc(realIndex, kmlcontrol)
  31. end
  32. function this:RewardItemUpdateFunc(realIndex, kmlcontrol)
  33. local itemData = self.allItemData[realIndex + 1]
  34. self.Reward_Item_all_item[realIndex + 1]:RefreshItem(itemData)
  35. end
  36. function this:RefreshItemList()
  37. if self.args then
  38. self.allItemData = {}
  39. for _,item in ipairs(self.args.basicItem) do
  40. local data = {}
  41. data.id = item[1]
  42. data.count = item[2]
  43. data.specialTips = nil
  44. table.insert(self.allItemData,data)
  45. end
  46. local specialData = {}
  47. specialData.id = self.args.specialItem[1]
  48. specialData.count = self.args.specialItem[2]
  49. specialData.specialTips = self.args.specialTips
  50. table.insert(self.allItemData,specialData)
  51. GUI:DataListUpdateData(self.view.RewardItemDatalist,_,function()
  52. self:RefreshShowType(self.showType)
  53. end)
  54. end
  55. end
  56. --endregion 道具奖励列表
  57. ---注册UI事件和服务器消息
  58. function this:RegistEvents()
  59. GUI:AddOnClickEvent(self.view.GetBtn, self, self.GetBtn)
  60. end
  61. function this:GetBtn()
  62. if self.showType == OpenServiceLevelReward_ShowType.GetNormal or self.showType == OpenServiceLevelReward_ShowType.GetSpecial or self.showType == OpenServiceLevelReward_ShowType.GetSpecialOnly then
  63. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECEIVE_LEVEL_REWARD,{id=self.args.id})
  64. elseif self.showType == OpenServiceLevelReward_ShowType.SpecialGoto then
  65. GUI:UIPanel_Close("dev/outui/MainActivity/Panel/KLMainActivity/KLMainActivityPanel")
  66. GUI:UIPanel_Open("dev/outui/VIP/Panel/KLNewVIPMain/KLNewVIPMainPanel")
  67. SL.HideMainPanel()
  68. else
  69. SL:TipMessage( "不满足领取条件",1, NoticeType.NoticeMid)
  70. end
  71. end
  72. ---界面显示时调用一次
  73. function this:Show()
  74. end
  75. ---创建或者刷新界面数据时调用
  76. function this:Refresh()
  77. --- @param self.args cfg_activity_levelUp_column
  78. if self.args then
  79. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  80. if playerLevel < self.args.level then
  81. GUI:Text_setString(self.view.levelText,string.format("等级达到<color=#FF5047>%d级</color>",self.args.level))
  82. GUI:setVisible(self.view.needLevelText,true)
  83. GUI:Text_setString(self.view.needLevelText,string.format("还差<color=#FF5047>%d</color>级可领取",self.args.level-playerLevel))
  84. else
  85. GUI:Text_setString(self.view.levelText,string.format("等级达到<color=#5DE367>%d级</color>",self.args.level))
  86. GUI:setVisible(self.view.needLevelText,false)
  87. end
  88. self:RefreshItemList()
  89. end
  90. end
  91. function this:RefreshItem(args)
  92. self.args = args
  93. self:Refresh()
  94. end
  95. function this:RefreshShowType(showType)
  96. self.showType = showType
  97. if showType == OpenServiceLevelReward_ShowType.GetNormal then
  98. GUI:setVisible(self.view.TipsTex,false)
  99. GUI:setVisible(self.view.GetBtn,true)
  100. GUI:setVisible(self.view.haveGet,false)
  101. GUI:setVisible(self.view.RedDot,true)
  102. GUI:Button_setTitleText(self.view.GetBtn,"领取奖励")
  103. if not string.isNullOrEmpty(self.args.Places) then
  104. GUI:setVisible(self.view.TipsTex,true)
  105. self:ShowTipsCount()
  106. GUI:setPositionX(self.view.TipsTex,194)
  107. end
  108. elseif showType == OpenServiceLevelReward_ShowType.GetSpecial then
  109. GUI:setVisible(self.view.TipsTex,false)
  110. GUI:setVisible(self.view.GetBtn,true)
  111. GUI:setVisible(self.view.haveGet,false)
  112. GUI:setVisible(self.view.RedDot,true)
  113. GUI:Button_setTitleText(self.view.GetBtn,"领取奖励")
  114. if not string.isNullOrEmpty(self.args.Places) then
  115. GUI:setVisible(self.view.TipsTex,true)
  116. self:ShowTipsCount()
  117. GUI:setPositionX(self.view.TipsTex,194)
  118. end
  119. elseif showType == OpenServiceLevelReward_ShowType.GetSpecialOnly then
  120. GUI:setVisible(self.view.TipsTex,false)
  121. GUI:setVisible(self.view.GetBtn,true)
  122. GUI:setVisible(self.view.haveGet,false)
  123. GUI:setVisible(self.view.RedDot,true)
  124. GUI:Button_setTitleText(self.view.GetBtn,"领取奖励")
  125. if not string.isNullOrEmpty(self.args.Places) then
  126. GUI:setVisible(self.view.TipsTex,true)
  127. self:ShowTipsCount()
  128. GUI:setPositionX(self.view.TipsTex,194)
  129. end
  130. elseif showType == OpenServiceLevelReward_ShowType.SpecialGoto then
  131. GUI:setVisible(self.view.TipsTex,false)
  132. GUI:setVisible(self.view.GetBtn,true)
  133. GUI:setVisible(self.view.haveGet,false)
  134. GUI:setVisible(self.view.RedDot,false)
  135. GUI:Button_setTitleText(self.view.GetBtn,self.args.specialButton)
  136. if not string.isNullOrEmpty(self.args.Places) then
  137. GUI:setVisible(self.view.TipsTex,true)
  138. self:ShowTipsCount()
  139. GUI:setPositionX(self.view.TipsTex,194)
  140. end
  141. elseif showType == OpenServiceLevelReward_ShowType.HaveGotten then
  142. GUI:setVisible(self.view.TipsTex,false)
  143. GUI:Text_setString(self.view.TipsTex,"已领取")
  144. GUI:setVisible(self.view.GetBtn,false)
  145. GUI:setVisible(self.view.haveGet,true)
  146. --GUI:setPositionX(self.view.TipsTex,316)
  147. elseif showType == OpenServiceLevelReward_ShowType.ServerCount then
  148. GUI:setVisible(self.view.TipsTex,true)
  149. GUI:setVisible(self.view.GetBtn,false)
  150. GUI:setVisible(self.view.haveGet,false)
  151. self:ShowTipsCount()
  152. GUI:setPositionX(self.view.TipsTex,316)
  153. elseif showType == OpenServiceLevelReward_ShowType.LevelNotEnough then
  154. GUI:setVisible(self.view.TipsTex,false)
  155. GUI:setVisible(self.view.GetBtn,false)
  156. GUI:setVisible(self.view.haveGet,false)
  157. end
  158. --刷新道具显示
  159. for _,item in ipairs(self.Reward_Item_all_item) do
  160. item:RefreshShowType(showType)
  161. end
  162. end
  163. function this:ShowTipsCount()
  164. local totalNum = tonumber(self.args.Places)
  165. local haveNum = 0
  166. if InfoManager.openServiceLevelRewardInfo.serverInfo[self.args.id] then
  167. haveNum = InfoManager.openServiceLevelRewardInfo.serverInfo[self.args.id]
  168. end
  169. local leftNum = totalNum - haveNum
  170. if leftNum < totalNum / 2 then
  171. GUI:Text_setString(self.view.TipsTex,string.format("全服限量:<color=#ff2323>%d</color>/%d",leftNum,totalNum))
  172. else
  173. GUI:Text_setString(self.view.TipsTex,string.format("全服限量:%d/%d",leftNum,totalNum))
  174. end
  175. end
  176. function this:Close()
  177. end
  178. return this