---@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