KLUIEfficiencyPanel.lua 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. ---@class KLUIEfficiencyPanel:UIKmlLuaPanelBase
  2. ---@field view KLUIEfficiencyPanelView
  3. local KLUIEfficiencyPanel = class(UIKmlLuaPanelBase)
  4. local this = KLUIEfficiencyPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. self.dataEfficiencyInfo = InfoManager.efficiencyInfo
  8. GUI:SetToggleGroup(self.view.MultiplierToggle,self.view.togglegroup)
  9. GUI:SetToggleGroup(self.view.PickupToggle,self.view.togglegroup)
  10. GUI:SetToggleGroup(self.view.ExplosionRateToggle,self.view.togglegroup)
  11. --GUI:SetToggleGroup(self.view.MiracleCoinsToggle,self.view.togglegroup)
  12. end
  13. ---创建或者刷新界面数据时调用
  14. function this:Refresh()
  15. SL:HideMainPanel()
  16. self:RefreshMultiplierData()
  17. self:RefreshRewardData()
  18. self:RefreshPickUpOrRecoveryState(5)
  19. self:RefreshPickUpOrRecoveryState(6)
  20. GUI:Toggle_setIsOn(self.view.MultiplierToggle,true)
  21. self.roleId=SL:GetMetaValue("MAIN_ACTOR_ID")
  22. end
  23. ---刷新主页倍率爆率信息
  24. function this:RefreshMultiplierData()
  25. --爆率
  26. local value = self.dataEfficiencyInfo:GetMultiplierInfoById(202)
  27. if value.curLevel == value.maxLevel then
  28. self.rateType = 2
  29. elseif value.curLevel == 0 then
  30. self.rateType = 0
  31. else
  32. self.rateType = 1
  33. end
  34. local rate = SL:GetConfig("cfg_efficiency", 202)
  35. local vipLevel = 1---ModuleCall(ModuleCallId.GetVipInfo).vipStage
  36. if vipLevel == 0 then
  37. GUI:Text_setString(self.view.TextRate, "当前提升爆率 <color=#FFFF00> 0%</color>")
  38. GUI:Text_setString(self.view.ExplosionRate_Button, rate.btnText[1])
  39. else
  40. local isMax, rateValue = self.dataEfficiencyInfo:GetCanShowVipInfo(vipLevel)
  41. GUI:Text_setString(self.view.TextRate, "当前提升爆率 <color=#FFFF00>" .. math.ceil(rateValue.explosionRate / 100) .. "%</color>")
  42. GUI:Text_setString(self.view.ExplosionRate_Button, isMax and rate.btnText[3] or rate.btnText[2])
  43. end
  44. --经验提升
  45. local cfg = SL:GetConfig("cfg_efficiency", 201)
  46. self.expType = InfoManager.efficiencyInfo:CheckBuyGift(self:GetStringInParentheses(cfg.condition[1]))
  47. if cfg.btnText[self.expType + 1] == "0" then
  48. GUI:setVisible(self.view.ButtonBuy, false)
  49. else
  50. GUI:setVisible(self.view.ButtonBuy, true)
  51. GUI:Text_setString(self.view.ButtonBuy, cfg.btnText[self.expType + 1])
  52. end
  53. end
  54. ---获取中括号之间的数值
  55. ---@param condition string
  56. ---@return string
  57. function this:GetStringInParentheses(condition)
  58. local firstIndex = string.find(condition, "%[", 1)
  59. local lastIndex = string .find(condition, "%]", firstIndex + 1)
  60. local str = string.sub(condition, firstIndex + 1, lastIndex - 1)
  61. return str
  62. end
  63. ---刷新一键拾取或者自动回收 按钮文本
  64. function this:RefreshPickUpOrRecoveryState(type)
  65. ---@type cfg_efficiency_column
  66. local info = SL:FindConfigs("cfg_efficiency", "type", type)
  67. if info and info[1] then
  68. if type == 5 then
  69. self.pickUpType =InfoManager.efficiencyInfo:CheckBuyGift(self:GetStringInParentheses(info[1].condition[1]))
  70. GUI:Text_setString(self.view.Pickup_Button, string.format("<color=white>%s</color>", info[1].btnText[self.pickUpType + 1]))
  71. elseif type == 6 then
  72. self.recoveryType = InfoManager.efficiencyInfo:CheckBuyGift(self:GetStringInParentheses(info[1].condition[1]))
  73. GUI:Text_setString(self.view.ExplosionRate_Button, string.format("<color=white>%s</color>", info[1].btnText[self.recoveryType + 1]))
  74. end
  75. end
  76. end
  77. --刷新奖励界面
  78. function this:RefreshRewardData()
  79. self.rewardInfo = self.dataEfficiencyInfo:GetCanShowReward()
  80. if self.rewardInfo == nil then
  81. GUI:setVisible(self.view.HighImageBtn, false)
  82. return
  83. else
  84. GUI:setVisible(self.view.HighImageBtn, true)
  85. end
  86. -- local info = SL:FindConfigs("cfg_efficiency_promote", "group", self.rewardInfo.conditionGroup)
  87. if info == nil then
  88. GUI:setVisible(self.view.HighImageBtn, false)
  89. return
  90. end
  91. local item = GUI:Item_Create(self.view.reward, {
  92. width = "80",
  93. height = "80",
  94. itemid = info[1].reward[1],
  95. tips = "1",
  96. noclip = "1",
  97. mfixsize = "80,80"
  98. })
  99. GUI:AddOnClickEvent(item, self, self.ClickEquipItemIcon, { id = self.rewardInfo.id, lvLimit = self.rewardInfo.level })
  100. local level
  101. if SL:GetMetaValue("ACTOR_LEVEL",self.roleId) >= self.rewardInfo.level then
  102. GUI:setVisible(self.view.reward, true)
  103. level = "<color=#00FF00>0</color>"
  104. else
  105. GUI:setVisible(self.view.reward, false)
  106. level = "<color=#FF0000>" .. (self.rewardInfo.level - SL:GetMetaValue("ACTOR_LEVEL",self.roleId)) .. "</color>"
  107. end
  108. GUI:Text_setString(self.view.LvLimit, "再升 " .. level .. " 级")
  109. end
  110. ---注册UI事件和服务器消息
  111. function this:RegistEvents()
  112. GUI:AddOnClickEvent(self.view.CloseBtn, self, self.OnClickCloseButton)
  113. GUI:SetToggleOnValueChange(self.view.MultiplierToggle, self, self.OnToggleMultiplierButton, 1)
  114. GUI:SetToggleOnValueChange(self.view.PickupToggle, self, self.OnToggleMultiplierButton, 2)
  115. GUI:SetToggleOnValueChange(self.view.ExplosionRateToggle, self, self.OnToggleMultiplierButton, 3)
  116. --GUI:SetToggleOnValueChange(self.view.MiracleCoinsToggle, self, self.OnToggleMultiplierButton, 4)
  117. GUI:AddOnClickEvent(self.view.ButtonBuy, self, self.OnClickButtonBuy)
  118. --GUI:AddOnClickEvent(self.view.ButtonGift, self, self.OnClickButtonGift)
  119. GUI:AddOnClickEvent(self.view.ButtonActive, self, self.OnClickButtonActive)
  120. GUI:AddOnClickEvent(self.view.Pickup_Button, self, self.OnClickPickup_Button)
  121. GUI:AddOnClickEvent(self.view.ExplosionRate_Button, self, self.OnClickExplosionRate_Button)
  122. GUI:AddOnClickEvent(self.view.HighImageBtn, self, self.ClickEquipItemIcon)
  123. --SL:RegisterLuaNetMsg(MessageDef.ResEfficiencyMagnificationMessage,self.ResEfficiencyMagnificationMessage,self)
  124. end
  125. --领取奖励
  126. function this:ClickEquipItemIcon()
  127. if SL:GetMetaValue("ACTOR_LEVEL",self.roleId) >= self.rewardInfo.level then
  128. SL:ReqReceiveEfficiencyRewardMessage(self.rewardInfo.id)
  129. else
  130. SL:TipMessage( SL:GetConfig('cfg_string',249).text,1, NoticeType.NoticeMid )--"等级不足!",
  131. end
  132. end
  133. ----奇迹币
  134. function this:OnClickExplosionRate_Button()
  135. local cfg = SL:GetConfig("cfg_efficiency", 601)
  136. ShortcutMgr.Do(cfg.instruction[self.recoveryType + 1])
  137. end
  138. ----会员提升
  139. function this:OnClickExplosionRate_Button()
  140. local cfg = SL:GetConfig("cfg_efficiency", 601)
  141. ShortcutMgr.Do(cfg.instruction[self.recoveryType + 1])
  142. end
  143. ----自动拾取
  144. function this:OnClickPickup_Button()
  145. local cfg = SL:GetConfig("cfg_efficiency", 501)
  146. ShortcutMgr.Do(cfg.instruction[self.pickUpType + 1])
  147. end
  148. ----激活会员
  149. function this:OnClickButtonActive()
  150. local cfg = SL:GetConfig("cfg_efficiency", 202)
  151. ShortcutMgr.Do(cfg.instruction[1])
  152. end
  153. ----直购礼包
  154. function this:OnClickButtonGift()
  155. local cfg = SL:GetConfig("cfg_efficiency", 201)
  156. ShortcutMgr.Do(cfg.instruction[self.expType + 1])
  157. end
  158. ----充值
  159. function this:OnClickButtonBuy()
  160. local cfg = SL:GetConfig("cfg_efficiency", 201)
  161. ShortcutMgr.Do(cfg.instruction[self.expType + 1])
  162. end
  163. function this:OnClickCloseButton()
  164. GUI:UIPanel_Close("dev/ui/Efficiency/Panel/KLUIEfficiency/KLUIEfficiencyPanel")
  165. end
  166. function this:OnToggleMultiplierButton(control, eventData)
  167. GUI:setVisible(self.view.MultiplierPanel, eventData == 1)
  168. GUI:setVisible(self.view.PickupPanel, eventData == 2)
  169. GUI:setVisible(self.view.ExplosionRatePanel, eventData == 3)
  170. -- GUI:setVisible(self.view.MiracleCoinsPanel, eventData == 4)
  171. end
  172. function this:Close()
  173. SL:ShowMainPanel()
  174. end
  175. return this