---@class KLUIEfficiencyPanel:UIKmlLuaPanelBase ---@field view KLUIEfficiencyPanelView local KLUIEfficiencyPanel = class(UIKmlLuaPanelBase) local this = KLUIEfficiencyPanel ---创建时调用一次 function this:Init() self.dataEfficiencyInfo = InfoManager.efficiencyInfo GUI:SetToggleGroup(self.view.MultiplierToggle,self.view.togglegroup) GUI:SetToggleGroup(self.view.PickupToggle,self.view.togglegroup) GUI:SetToggleGroup(self.view.ExplosionRateToggle,self.view.togglegroup) --GUI:SetToggleGroup(self.view.MiracleCoinsToggle,self.view.togglegroup) end ---创建或者刷新界面数据时调用 function this:Refresh() SL:HideMainPanel() self:RefreshMultiplierData() self:RefreshRewardData() self:RefreshPickUpOrRecoveryState(5) self:RefreshPickUpOrRecoveryState(6) GUI:Toggle_setIsOn(self.view.MultiplierToggle,true) self.roleId=SL:GetMetaValue("MAIN_ACTOR_ID") end ---刷新主页倍率爆率信息 function this:RefreshMultiplierData() --爆率 local value = self.dataEfficiencyInfo:GetMultiplierInfoById(202) if value.curLevel == value.maxLevel then self.rateType = 2 elseif value.curLevel == 0 then self.rateType = 0 else self.rateType = 1 end local rate = SL:GetConfig("cfg_efficiency", 202) local vipLevel = 1---ModuleCall(ModuleCallId.GetVipInfo).vipStage if vipLevel == 0 then GUI:Text_setString(self.view.TextRate, "当前提升爆率 0%") GUI:Text_setString(self.view.ExplosionRate_Button, rate.btnText[1]) else local isMax, rateValue = self.dataEfficiencyInfo:GetCanShowVipInfo(vipLevel) GUI:Text_setString(self.view.TextRate, "当前提升爆率 " .. math.ceil(rateValue.explosionRate / 100) .. "%") GUI:Text_setString(self.view.ExplosionRate_Button, isMax and rate.btnText[3] or rate.btnText[2]) end --经验提升 local cfg = SL:GetConfig("cfg_efficiency", 201) self.expType = InfoManager.efficiencyInfo:CheckBuyGift(self:GetStringInParentheses(cfg.condition[1])) if cfg.btnText[self.expType + 1] == "0" then GUI:setVisible(self.view.ButtonBuy, false) else GUI:setVisible(self.view.ButtonBuy, true) GUI:Text_setString(self.view.ButtonBuy, cfg.btnText[self.expType + 1]) end end ---获取中括号之间的数值 ---@param condition string ---@return string function this:GetStringInParentheses(condition) local firstIndex = string.find(condition, "%[", 1) local lastIndex = string .find(condition, "%]", firstIndex + 1) local str = string.sub(condition, firstIndex + 1, lastIndex - 1) return str end ---刷新一键拾取或者自动回收 按钮文本 function this:RefreshPickUpOrRecoveryState(type) ---@type cfg_efficiency_column local info = SL:FindConfigs("cfg_efficiency", "type", type) if info and info[1] then if type == 5 then self.pickUpType =InfoManager.efficiencyInfo:CheckBuyGift(self:GetStringInParentheses(info[1].condition[1])) GUI:Text_setString(self.view.Pickup_Button, string.format("%s", info[1].btnText[self.pickUpType + 1])) elseif type == 6 then self.recoveryType = InfoManager.efficiencyInfo:CheckBuyGift(self:GetStringInParentheses(info[1].condition[1])) GUI:Text_setString(self.view.ExplosionRate_Button, string.format("%s", info[1].btnText[self.recoveryType + 1])) end end end --刷新奖励界面 function this:RefreshRewardData() self.rewardInfo = self.dataEfficiencyInfo:GetCanShowReward() if self.rewardInfo == nil then GUI:setVisible(self.view.HighImageBtn, false) return else GUI:setVisible(self.view.HighImageBtn, true) end -- local info = SL:FindConfigs("cfg_efficiency_promote", "group", self.rewardInfo.conditionGroup) if info == nil then GUI:setVisible(self.view.HighImageBtn, false) return end local item = GUI:Item_Create(self.view.reward, { width = "80", height = "80", itemid = info[1].reward[1], tips = "1", noclip = "1", mfixsize = "80,80" }) GUI:AddOnClickEvent(item, self, self.ClickEquipItemIcon, { id = self.rewardInfo.id, lvLimit = self.rewardInfo.level }) local level if SL:GetMetaValue("ACTOR_LEVEL",self.roleId) >= self.rewardInfo.level then GUI:setVisible(self.view.reward, true) level = "0" else GUI:setVisible(self.view.reward, false) level = "" .. (self.rewardInfo.level - SL:GetMetaValue("ACTOR_LEVEL",self.roleId)) .. "" end GUI:Text_setString(self.view.LvLimit, "再升 " .. level .. " 级") end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.CloseBtn, self, self.OnClickCloseButton) GUI:SetToggleOnValueChange(self.view.MultiplierToggle, self, self.OnToggleMultiplierButton, 1) GUI:SetToggleOnValueChange(self.view.PickupToggle, self, self.OnToggleMultiplierButton, 2) GUI:SetToggleOnValueChange(self.view.ExplosionRateToggle, self, self.OnToggleMultiplierButton, 3) --GUI:SetToggleOnValueChange(self.view.MiracleCoinsToggle, self, self.OnToggleMultiplierButton, 4) GUI:AddOnClickEvent(self.view.ButtonBuy, self, self.OnClickButtonBuy) --GUI:AddOnClickEvent(self.view.ButtonGift, self, self.OnClickButtonGift) GUI:AddOnClickEvent(self.view.ButtonActive, self, self.OnClickButtonActive) GUI:AddOnClickEvent(self.view.Pickup_Button, self, self.OnClickPickup_Button) GUI:AddOnClickEvent(self.view.ExplosionRate_Button, self, self.OnClickExplosionRate_Button) GUI:AddOnClickEvent(self.view.HighImageBtn, self, self.ClickEquipItemIcon) --SL:RegisterLuaNetMsg(MessageDef.ResEfficiencyMagnificationMessage,self.ResEfficiencyMagnificationMessage,self) end --领取奖励 function this:ClickEquipItemIcon() if SL:GetMetaValue("ACTOR_LEVEL",self.roleId) >= self.rewardInfo.level then SL:ReqReceiveEfficiencyRewardMessage(self.rewardInfo.id) else SL:TipMessage( SL:GetConfig('cfg_string',249).text,1, NoticeType.NoticeMid )--"等级不足!", end end ----奇迹币 function this:OnClickExplosionRate_Button() local cfg = SL:GetConfig("cfg_efficiency", 601) ShortcutMgr.Do(cfg.instruction[self.recoveryType + 1]) end ----会员提升 function this:OnClickExplosionRate_Button() local cfg = SL:GetConfig("cfg_efficiency", 601) ShortcutMgr.Do(cfg.instruction[self.recoveryType + 1]) end ----自动拾取 function this:OnClickPickup_Button() local cfg = SL:GetConfig("cfg_efficiency", 501) ShortcutMgr.Do(cfg.instruction[self.pickUpType + 1]) end ----激活会员 function this:OnClickButtonActive() local cfg = SL:GetConfig("cfg_efficiency", 202) ShortcutMgr.Do(cfg.instruction[1]) end ----直购礼包 function this:OnClickButtonGift() local cfg = SL:GetConfig("cfg_efficiency", 201) ShortcutMgr.Do(cfg.instruction[self.expType + 1]) end ----充值 function this:OnClickButtonBuy() local cfg = SL:GetConfig("cfg_efficiency", 201) ShortcutMgr.Do(cfg.instruction[self.expType + 1]) end function this:OnClickCloseButton() GUI:UIPanel_Close("dev/ui/Efficiency/Panel/KLUIEfficiency/KLUIEfficiencyPanel") end function this:OnToggleMultiplierButton(control, eventData) GUI:setVisible(self.view.MultiplierPanel, eventData == 1) GUI:setVisible(self.view.PickupPanel, eventData == 2) GUI:setVisible(self.view.ExplosionRatePanel, eventData == 3) -- GUI:setVisible(self.view.MiracleCoinsPanel, eventData == 4) end function this:Close() SL:ShowMainPanel() end return this