---@class KLDragonSoulComboPanel:UIKmlLuaPanelBase ---@field view KLDragonSoulComboPanelView local KLDragonSoulComboPanel = class(UIKmlLuaPanelBase) local this =KLDragonSoulComboPanel function this:AsyncLoadUI() end ---创建时调用一次 function this:Init() GUI:DataListInitData(self.view.datalist_cost, function() return #self.itemCostList end, function() end, function() end, function(realIndex) local item_cost = GUI:GetChildControl(self.view.datalist_cost,realIndex,'item_cost') local text_cost = GUI:GetChildControl(self.view.datalist_cost,realIndex,'text_cost') local text_name = GUI:GetChildControl(self.view.datalist_cost,realIndex,'text_name') local btn_add = GUI:GetChildControl(self.view.datalist_cost,realIndex,'btn_add') local info = self.itemCostList[realIndex + 1] GUI:Item_setItemId(item_cost, info.id) local count = SL:GetBagItemCount(info.id) if count < info.cost then GUI:Text_setString(text_cost, "" .. count .. "/" .. info.cost) self.canUpgrade = false else GUI:Text_setString(text_cost, "" .. count .. "/" .. info.cost) end ---@type cfg_item_column local item = SL:GetConfig("cfg_item", info.id) GUI:Text_setString(text_name, item.name) GUI:AddOnClickEvent(item_cost, self, self.ItemCostTipsClick, info.id) GUI:AddOnClickEvent(btn_add, self, self.ItemCostGetClick, info.id) end) end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.btn_close, self, self.CloseSelf) GUI:AddOnClickEvent(self.view.btn_upgrade, self, self.UpgradeSkill) GUI:AddOnClickEvent(self.view.btn_max,self,self.ShowMaxEffect) GUI:AddOnClickEvent(self.view.btn_back,self,self.ShowNowEffect) SL:RegisterLuaNetMsg(MessageDef.ResComboSkillInfoMessage, self.ResComboSkillInfoMessage, self) end ---界面显示时调用一次 function this:Show() end ---创建或者刷新界面数据时调用 function this:Refresh() SL.HideMainPanel() self.job = SL:GetMetaValue(EMetaVarGetKey.JOB) self.comboInfo = SL:GetMetaValue(EMetaVarGetKey.GET_COMBO_SKILL) self.comboTbl = {} ---@type cfg_skill_info_column[] local cfg_skill_info = SL:GetConfigTable("cfg_skill_info") local skill_str = SL:GetConfig("cfg_global", 1501).value local skillTbl = string.split(skill_str, '|') --1#1030001#1#0|2#1030002#1#0|3#1030003#1#0 for i, v in pairs(skillTbl) do local tbl = string.split(v, '#') if tonumber(tbl[1]) == self.job then self.comboSkillCfgId = tonumber(tbl[2]) break end end self.maxLevel = 0 for _, v in pairs(cfg_skill_info) do if v.skillID == self.comboSkillCfgId then self.comboTbl[v.skillLevel] = v if v.skillLevel > self.maxLevel then self.maxLevel = v.skillLevel end end end self:RefreshUI() end function this:RefreshUI() ---刷新界面角色素模 local modelTbl = SL:GetConfig("cfg_model_default", self.job) local role_param = { "body", "head", "armor", "hand", "pants", "boot" } local modelStr for _, v in pairs(role_param) do if modelStr then modelStr = modelStr .. "#" .. modelTbl[v] else modelStr = modelTbl[v] end end local info, info_next if next(self.comboInfo) then ---激活 ---@type cfg_skill_info_column info = self.comboTbl[self.comboInfo.skillLv] ---@type cfg_skill_info_column info_next = self.comboTbl[self.comboInfo.skillLv + 1] else ---未激活 info_next = self.comboTbl[1] end if not info_next then ---当前满级 GUI:setVisible(self.view.panel_upgrade, false) GUI:setVisible(self.view.panel_max, true) GUI:Text_setString(self.view.text_max_detail, info.tips) GUI:SetPlayerRoleInfo(self.view.role_max, modelStr) GUI:Effect_setEffectId(self.view.role_effect_max, info.haloEffect) else if not info then ---当前未激活 GUI:setVisible(self.view.img_left_active, false) GUI:setVisible(self.view.img_left_unActive, true) local text = SL:GetConfig("cfg_rule_text", 14).location GUI:Text_setString(self.view.text_left_detail, text) GUI:Button_setTitleText(self.view.btn_upgrade, "激活") else ---当前未满级 GUI:setVisible(self.view.img_left_active, true) GUI:setVisible(self.view.img_left_unActive, false) GUI:Text_setString(self.view.text_left_lv, tostring(info.skillLevel)) GUI:Text_setString(self.view.text_left_detail, info.tips) GUI:Button_setTitleText(self.view.btn_upgrade, "升级") end GUI:setVisible(self.view.panel_upgrade, true) GUI:setVisible(self.view.panel_max, false) GUI:Text_setString(self.view.text_right_lv, tostring(info_next.skillLevel)) GUI:Text_setString(self.view.text_right_detail, info_next.tips) ---刷新消耗 self.canUpgrade = true self.itemCostList = {} ---刷新升级材料 for i, v in ipairs(info_next.skillLevelUpItemID) do self.itemCostList[#self.itemCostList + 1] = { ["id"] = v[1], ["cost"] = v[2] } end GUI:DataListUpdateData(self.view.datalist_cost) GUI:SetPlayerRoleInfo(self.view.role, modelStr) if info then GUI:Effect_setEffectId(self.view.role_effect, info.haloEffect) end GUI:setVisible(self.view.btn_max, true) GUI:setVisible(self.view.btn_back, false) end end function this:UpgradeSkill() if self.canUpgrade then if not self.delayUpgrade then SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_COMBO_SKILL_UP) self.delayUpgrade = true SL:ScheduleOnce(1, function() self.delayUpgrade = false end) end else SL:TipMessage( SL:GetConfig('cfg_string', 463).text, 1, NoticeType.NoticeMid ) --道具不足,请补充道具! end end function this:ItemCostTipsClick(_, eventData) SL:OpenTips(nil, eventData) end function this:ItemCostGetClick(_, eventData) SL:CommonItemGetPath(nil, eventData, nil, nil, self) end function this:ShowMaxEffect() GUI:setVisible(self.view.btn_max, false) GUI:setVisible(self.view.btn_back, true) GUI:Effect_setEffectId(self.view.role_effect, self.comboTbl[self.maxLevel].haloEffect) end function this:ShowNowEffect() GUI:setVisible(self.view.btn_max, true) GUI:setVisible(self.view.btn_back, false) if self.comboInfo.skillLv then GUI:Effect_setEffectId(self.view.role_effect, self.comboTbl[self.comboInfo.skillLv].haloEffect) else GUI:Effect_setEffectId(self.view.role_effect, 0) end end ---连击技能升级返回 function this:ResComboSkillInfoMessage(_, message) self.comboInfo = message self:RefreshUI() SL:SetMetaValue(EMetaVarSetKey.COMBOSKILL_CHANGE, self.comboInfo.skillCfgId, self.comboInfo.skillLv) GUI:SetActive(self.view.strength_ok, false) GUI:SetActive(self.view.strength_ok, true) end function this:CloseSelf() GUI:UIPanel_Close("dev/outui/DragonSoulCombo/Panel/KLDragonSoulCombo/KLDragonSoulComboPanel") --GUI:UIPanel_Open("dev/outui/DragonSoulCombo/Panel/KLDragonSoulCombo/KLDragonSoulComboPanel") end function this:Close() self.delayUpgrade = false SL.ShowMainPanel() end return this