---@class KLUIForgingMasterPanel:UIKmlLuaPanelBase ---@field view KLUIForgingMasterPanelView local KLUIForgingMasterPanel = class(UIKmlLuaPanelBase) local this =KLUIForgingMasterPanel ---创建时调用一次 function this:Init() ---1 锻造, 2 追加 self.uiType = self.args.uiType self.cfgId = self.args.cfgId end ---创建或者刷新界面数据时调用 function this:Refresh() ---@type cfg_item_column local item = SL:GetConfig("cfg_item", self.cfgId) local tbl_id = tonumber(item.strPart[1] .. "0" .. self.uiType) ---@type cfg_equip_masterGroup_column local group = SL:GetConfig("cfg_equip_masterGroup", tbl_id) ---@type cfg_equip_master_column[] local master = SL:GetConfigTable("cfg_equip_master") ---@type cfg_equip_master_column[] local masterTbl = {} local masterValue, masterStrPartId, masterCount for i, v in pairs(master) do if v.group == group.group and v.type == self.uiType then masterTbl[#masterTbl + 1] = v masterCount = v.count masterValue = v.value if v.strPartId and not masterStrPartId then masterStrPartId = {} for k, part in ipairs(v.strPartId) do masterStrPartId[k] = part end end end end table.sort(masterTbl, function(a,b) return a.id < b.id end) local forgingLevel = self:GetShowMasterLevel(masterCount, masterStrPartId) local curLvId = 0 for i, v in ipairs(masterTbl) do if v.lv > forgingLevel then self:RefreshUI(curLvId, v.id, group.strpartShow) return end curLvId = v.id end if curLvId > 0 then self:RefreshUI(curLvId, nil, group.strpartShow) end end ---注册UI事件和服务器消息 function this:RegistEvents() --GUI:UIPanel_Open("dev/ui/Equip/Panel/KLUIForgingMaster/KLUIForgingMasterPanel") --GUI:UIPanel_Close("dev/ui/Equip/Panel/KLUIForgingMaster/KLUIForgingMasterPanel") GUI:AddOnClickEvent(self.view.btn_close, self, self.CloseSelf) end function this:GetShowMasterLevel(type, partStr) ---@type CommonProtos.Item[] local equipData = SL:GetMetaValue(EMetaVarGetKey.EQUIP_DATA) if type == 1 then local minForgingLevel = 100 for i, v in pairs(equipData[1]) do ---@type cfg_item_column local item = SL:GetConfig("cfg_item", v.cfgId) for j, k in pairs(partStr) do if item.strPart[1] == k or item.strPart[2] == k then local forgingLevel if self.uiType == 1 then forgingLevel = EquipFunc.GetEquipStrengthLevel(v) else forgingLevel = EquipFunc.GetEquipAppendLevel(v) end if forgingLevel < minForgingLevel then minForgingLevel = forgingLevel end table.remove(partStr, j) break end end end if #partStr == 0 then return minForgingLevel else return 0 end else local totalLevel = 0 for i, v in pairs(equipData[1]) do ---@type cfg_item_column local item = SL:GetConfig("cfg_item", v.cfgId) for j, k in pairs(partStr) do if k == item.strPart[1] or k == item.strPart[2] then local forgingLevel = 0 if self.uiType == 1 then forgingLevel = EquipFunc.GetEquipStrengthLevel(v) else forgingLevel = EquipFunc.GetEquipAppendLevel(v) end totalLevel = totalLevel + forgingLevel break end end end return totalLevel end end function this:RefreshUI(curLevel, nextLevel, strpartShow) local partList if nextLevel then if curLevel == 0 then ---未激活 ---@type cfg_equip_master_column local curTbl = SL:GetConfig("cfg_equip_master", nextLevel) GUI:Text_setString(self.view.now_attr, "" .. curTbl.note .. "+" .. curTbl.lv .. "") GUI:Text_setString(self.view.now_bonus, self:GetAttrInfo(curTbl.att2)) partList = curTbl.strPartId else ---激活 local curTbl = SL:GetConfig("cfg_equip_master", curLevel) GUI:Text_setString(self.view.now_attr, curTbl.note .. "+" .. curTbl.lv .. "") GUI:Text_setString(self.view.now_bonus, self:GetAttrInfo(curTbl.att2, 1)) partList = curTbl.strPartId end if curLevel == 0 then nextLevel = nextLevel + 1 end GUI:SetActive(self.view.next_level, true) ---@type cfg_equip_master_column local nextTbl = SL:GetConfig("cfg_equip_master", nextLevel) GUI:Text_setString(self.view.next_attr, "" .. nextTbl.note .. "+" .. nextTbl.lv .. "") GUI:Text_setString(self.view.next_bonus, self:GetAttrInfo(nextTbl.att2)) else ---满级 ---@type cfg_equip_master_column local curTbl = SL:GetConfig("cfg_equip_master", curLevel) GUI:Text_setString(self.view.now_attr, curTbl.note .. "+" .. curTbl.lv .. "") GUI:Text_setString(self.view.now_bonus, self:GetAttrInfo(curTbl.att2, 1)) GUI:SetActive(self.view.next_level, false) partList = curTbl.strPartId end if self.uiType == 1 then GUI:Text_setString(self.view.text_title, "强化大师") GUI:Text_setString(self.view.text_tips, "满足强化条件可点亮属性") else GUI:Text_setString(self.view.text_title, "追加大师") GUI:Text_setString(self.view.text_tips, "满足追加条件可点亮属性") end GUI:Text_setString(self.view.text_part_name, strpartShow) end function this:GetAttrInfo(attr, act) local value, str -----@type cfg_att_info_column --local attrTbl = SL:GetConfig("cfg_att_info", attr[1]) --if attrTbl.remarks == 2 then -- value = attr[2] / 100 -- str = value .. "%" --else -- str = attr[2] --end --if act then -- return attrTbl.name .. "+" .. str .. "" --else -- return "" .. attrTbl.name .. "+" .. str .. "" --end if attr[1] == 1 then value = "强化属性" elseif attr[1] == 2 then value = "追加属性" end str = attr[2] / 100 if act then return value .. "+" .. str .. "%" else return "" .. value .. "+" .. str .. "%" end end function this:CloseSelf() GUI:UIPanel_Close("dev/outui/Equip/Panel/KLUIForgingMaster/KLUIForgingMasterPanel") end function this:Close() end return this