---@class KLUIEquipTipsComparsionPanel:UIKmlLuaPanelBase
---@field view KLUIEquipTipsComparsionPanelView
local KLUIEquipTipsComparsionPanel = class(UIKmlLuaPanelBase)
local this = KLUIEquipTipsComparsionPanel
---创建时调用一次
function this:Init()
-- if self.args.info and self.args.info.hideMask then
-- GUI:setVisible(self.view.background_close, false)
-- else
-- GUI:setVisible(self.view.background_close, true)
-- end
if self.args.info and self.args.info.isRight then
GUI:setAnchorPoint(self.view.root, 2, 0)
end
if self.args.info and self.args.info.posX then
GUI:setPositionX(self.view.root,self.args.info.posX)
end
GUI:DataListInitData(self.view.equipzhiyeNeedData, function()
return self:NeedCareerDataListItemCountFunc()
end, function(realIndex)
return self:NeedCareerDataListItemGetFunc(realIndex)
end, function(realIndex, kmlcontrol)
return self:NeedCareerDataListItemInitFunc(realIndex, kmlcontrol)
end, function(realIndex, kmlcontrol)
return self:NeedCareerDataListItemUpdateFunc(realIndex, kmlcontrol)
end)
GUI:DataListInitData(self.view.equipNeedData, function()
return self:NeedDataListItemCountFunc()
end, function(realIndex)
return self:NeedDataListItemGetFunc(realIndex)
end, function(realIndex, kmlcontrol)
return self:NeedDataListItemInitFunc(realIndex, kmlcontrol)
end, function(realIndex, kmlcontrol)
return self:NeedDataListItemUpdateFunc(realIndex, kmlcontrol)
end)
GUI:DataListInitData(self.view.all_info_data, function()
return self:EquipAttrDataListItemCountFunc()
end, function(realIndex)
return self:EquipAttrDataListItemGetFunc(realIndex)
end, function(realIndex, kmlcontrol)
return self:EquipAttrDataListItemInitFunc(realIndex, kmlcontrol)
end, function(realIndex, kmlcontrol)
return self:EquipAttrDataListItemUpdateFunc(realIndex, kmlcontrol)
end)
self.firstCharge_list = { 28810531, 28820531, 28830531 }
end
---创建或者刷新界面数据时调用
function this:Refresh()
self.archenge = {}
local itemInfo = SL:GetPosItemInfo(self.args.equip_pos, self.args.cfgId, self.args.id)
local name = SL:GetEquipValue(EMetaVarGetKey.EQUIP_NAME, self.args.equip_pos, self.args.cfgId, self.args.id)
self.type = SL:GetMetaValue(EMetaVarGetKey.ITEMTYPE, self.args.cfgId)
self.subType = SL:GetMetaValue(EMetaVarGetKey.ITEMSUBTYPE, self.args.cfgId)
if self.type == 2 and self.subType == 16 then
--坐骑
GUI:UIPanel_Open('dev/outui/Mount/Panel/KLMountTip/KLMountTipPanel', nil, nil, self.args)
return
end
local twoHanded = SL:GetEquipValue(EMetaVarGetKey.EQUIP_TWO_HANDED, self.args.equip_pos, self.args.cfgId, self.args.id)
local two_handed = ""
if self.subType and self.subType <= 3 then
if twoHanded and twoHanded == 1 then
two_handed = "双手武器"
else
two_handed = "单手武器"
end
end
local equip_status = ""
local isDeal = 0
--local isDeal = SL:GetMetaValue(EMetaVarGetKey.ITEM_IS_DEAL, self.args.cfgId)
if itemInfo then
if itemInfo.bind then
isDeal = 2
else
isDeal = 1
end
else
local lockItem = SL:GetConfig("cfg_item", self.args.cfgId).lockItem
if lockItem[1] then
isDeal = lockItem[1]
end
end
if itemInfo then
if isDeal == 1 then
local strengthen = EquipFunc.GetEquipStrengthLevel(itemInfo)
if strengthen > 0 then
isDeal = 2
end
end
if isDeal == 1 then
local appLevel = EquipFunc.GetEquipAppendLevel(itemInfo)
if appLevel > 0 then
isDeal = 2
end
end
if isDeal == 1 then
local regenerateToAttr = SL:GetEquipValue(EMetaVarGetKey.EQUIP_REGENERATE_ATTR, self.args.equip_pos, self.args.cfgId, self.args.id)
if regenerateToAttr and table.count(regenerateToAttr) > 0 then
isDeal = 2
end
end
end
if isDeal == 1 then
equip_status = "可交易"
elseif isDeal == 2 then
equip_status = "不可交易"
end
if self.args.equip_pos == "equip" then
equip_status = equip_status .. "[已装备]"
end
---描述设置空
GUI:Text_setString(self.view.TipsText, "")
GUI:SetActive(self.view.TipsText, false)
--模型高度
local modelHeight = 0
--底部文字存在的情况下增加的高度
local bottomDescHeight = 0
if self.type == 6 and self.subType == 14 then
--变身戒指
GUI:UIPanel_Close("dev/ui/Tips/Panel/KLIUItemTips/KLUIItemTipsPanel")
modelHeight = 180
end
--生成一下模型
if modelHeight > 0 then
GUI:setVisible(self.view.model1, true)
--模型路径
local modelPath = ""
---@type cfg_item_column
local itemTbl = SL:GetConfig("cfg_item", self.args.cfgId, "id")
--设置底部文字
if itemTbl.bottomdesc ~= "" then
GUI:SetActive(self.view.TipsText, true)
GUI:Text_setString(self.view.TipsText, itemTbl.bottomdesc)
GUI:setPositionY(self.view.TipsTextScrollview, 70)
bottomDescHeight = 50
end
if self.type == 6 and self.subType == 14 then
--变身戒指
---@type cfg_model_monster_column
local model_tbl = SL:GetConfig("cfg_model_monster", tonumber(itemTbl.useParam), "id")
modelPath = model_tbl.path
--空的话说明已使用
if equip_status == "" then
equip_status = "不可交易"
if itemTbl.bottomdesc ~= "" then
--无按钮的情况下并且底部文字有的情况下增加一些高度
bottomDescHeight = 100
end
modelHeight = (modelHeight + bottomDescHeight) / 2
GUI:setPositionY(self.view.TipsTextScrollview, 15)
end
--幻化了的话说明已装备
local CurMonsterId = InfoManager.appearInfo.GetCurMonsterId()
if CurMonsterId == model_tbl.id then
equip_status = equip_status .. "[已装备]"
end
end
--模型数据
local modelData = {
mscale = "30,30,30",
mrotate = "0,150,0",
x = "0",
y = "0",
z = "-1000",
a = "00",
src = modelPath,
}
if not self.cur_model then
--生成模型
self.cur_model = GUI:Model_Create(self.view.model1, modelData)
else
GUI:Item_UpdataData(self.cur_model, modelData)
end
end
local top_num = 0
local grade = SL:GetEquipValue(EMetaVarGetKey.EQUIP_GRADE, self.args.equip_pos, self.args.cfgId, self.args.id)
local name_color = SL:GetConfig("cfg_item", self.args.cfgId).color
local rank = SL:GetEquipValue(EMetaVarGetKey.EQUIP_RANK, self.args.equip_pos, self.args.cfgId, self.args.id)
local useLevelLimit = SL:GetEquipValue(EMetaVarGetKey.EQUIP_USE_LEVEL_LIMIT, self.args.equip_pos, self.args.cfgId, self.args.id)
GUI:Text_setTextColor(self.view.equip_name, tostring(name_color))
GUI:Item_setItemId(self.view.equip_tips_item, self.args.cfgId)
self:SetLiuGuang(itemInfo)
local shape = SL:GetConfig("cfg_item", self.args.cfgId).shape[1]
local rotation = SL:GetConfig("cfg_model_charactor", shape).rotateAxis
local rotation_str = rotation .. ",50,0"
self.Schedule1 = SL:ScheduleOnce(0.2, function()
if self.view then
GUI:Item_Rotate(self.view.equip_tips_item, rotation_str)
end
end)
GUI:Text_setString(self.view.equip_status, equip_status)
if string.isNullOrEmpty(two_handed) then
GUI:setVisible(self.view.equip_type_titlt, false)
else
GUI:setVisible(self.view.equip_type_titlt, true)
GUI:Text_setString(self.view.equip_type, two_handed)
end
-- 大天使装备的阶数需要特殊处理
if SL:GetConfig("cfg_item", self.args.cfgId, "id").wearBarID[1] == EEquipWearBarType.Archange then
if not self.args.id or not InfoManager.archangeEquipInfo:IsHaveArchangeEquip(self.args.id) then
local rankStr = tostring(InfoManager.archangeEquipInfo:GetMaxRank(self.args.cfgId)) .. "阶"
GUI:Text_setString(self.view.equip_jie, rankStr)
GUI:setVisible(self.view.equip_jie_root, true)
top_num = top_num + 1
else
local archangeRank = InfoManager.archangeEquipInfo:GetEquipLevelInfo(self.args.id).rank
local rankStr = tostring(archangeRank) .. "阶"
GUI:Text_setString(self.view.equip_jie, rankStr)
GUI:setVisible(self.view.equip_jie_root, true)
top_num = top_num + 1
end
else
if rank and rank ~= 0 then
local rankStr = SL:NumberToChinese(rank)
rankStr = rankStr .. "阶"
GUI:Text_setString(self.view.equip_jie, rankStr)
GUI:setVisible(self.view.equip_jie_root, true)
top_num = top_num + 1
else
GUI:setVisible(self.view.equip_jie_root, false)
end
end
if not string.isNullOrEmpty(useLevelLimit) then
self.level_is_can_use = false
local level = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
local level_color = "#A52822"
local level_str = ""
if string.contains(useLevelLimit, "#") then
local levelLimit = SL:Split(useLevelLimit, "#")
if tonumber(levelLimit[1]) <= level and tonumber(levelLimit[2]) >= level then
self.level_is_can_use = true
end
level_str = levelLimit[1] .. "~" .. levelLimit[2]
else
if tonumber(useLevelLimit) <= level then
self.level_is_can_use = true
end
level_str = useLevelLimit
end
if self.level_is_can_use then
level_color = "#C9C9C9"
end
if level_str ~= "0" then
GUI:setVisible(self.view.equip_need_level_titlt, true)
GUI:Text_setString(self.view.equip_need_level, level_str)
GUI:Text_setTextColor(self.view.equip_need_level, level_color)
top_num = top_num + 1
else
GUI:setVisible(self.view.equip_need_level, false)
end
end
local job = SL:GetEquipValue(EMetaVarGetKey.EQUIP_NEED_CAREER, self.args.equip_pos, self.args.cfgId, self.args.id)
self.need_career = self:GetCareer(job)
local useAttLimit = SL:GetEquipValue(EMetaVarGetKey.EQUIP_WEAR_LIMIT, self.args.equip_pos, self.args.cfgId, self.args.id)
self.useAttLimit_list = self:GetUseAttLimit(useAttLimit)
local useAttLv = SL:GetConfig("cfg_equip_entryLib", self.args.cfgId).useAttLv
if not useAttLv or useAttLv == 0 then
GUI:setVisible(self.view.att_level_titlt, false)
else
top_num = top_num + 1
GUI:setVisible(self.view.att_level_titlt, true)
GUI:setVisible(self.view.att_need_level, true)
GUI:Text_setString(self.view.att_need_level, tostring(useAttLv))
local level = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
if level >= useAttLv then
GUI:Text_setTextColor(self.view.att_level_titlt, "#C9C9C9")
GUI:Text_setTextColor(self.view.att_need_level, "#C9C9C9")
else
GUI:Text_setTextColor(self.view.att_level_titlt, "#A52822")
GUI:Text_setTextColor(self.view.att_need_level, "#A52822")
end
end
----属性需要排序
local baseAttr = SL:GetEquipValue(EMetaVarGetKey.EQUIP_BASE_ATTR, self.args.equip_pos, self.args.cfgId, self.args.id)
local baseAttr = self:GetBaseAttr(baseAttr)
local strengthen = 0
local strengthenAttrList = {}
if itemInfo then
strengthen = EquipFunc.GetEquipStrengthLevel(itemInfo)
if strengthen > 0 then
strengthenAttrList = EquipFunc.GetEquipStrengthAttr(itemInfo)
end
end
local strengthenAttr = {}
if table.count(strengthenAttrList) > 0 then
for i, v in ipairs(strengthenAttrList) do
table.insert(strengthenAttr, { type = v[1], num = v[2] })
end
end
if strengthen and strengthen > 0 then
name = name .. " +" .. strengthen
end
GUI:Text_setString(self.view.equip_name, name)
--local appendAttr = SL:GetEquipValue(EMetaVarGetKey.EQUIP_APPEND_ATTR, self.args.equip_pos, self.args.cfgId, self.args.id)
local appendAttr = {}
local appendAttrList = {}
if itemInfo then
local appLevel = EquipFunc.GetEquipAppendLevel(itemInfo)
if appLevel > 0 then
appendAttrList = EquipFunc.GetEquipAppendAttr(itemInfo)
if appendAttrList and table.count(appendAttrList) > 0 then
for i, v in ipairs(appendAttrList) do
table.insert(appendAttr, { type = v[1], num = v[2] })
end
end
end
end
local originMagicAttrs = SL:GetEquipValue(EMetaVarGetKey.EQUIP_MAGIC_ATTR, self.args.equip_pos, self.args.cfgId, self.args.id)
--local skillGemIds = SL:GetEquipValue(EMetaVarGetKey.EQUIP_SKILL_ATTR,self.args.equip_pos,self.args.cfgId,self.args.id)
local gemSkills = SL:GetEquipSkills(itemInfo)
local luckAttrs = SL:GetEquipValue(EMetaVarGetKey.EQUIP_LUCK_ATTR, self.args.equip_pos, self.args.cfgId, self.args.id)
self.all_info = {}
self.IsHaveStrengthen = false ---是否有强化属性
self.all_att_sort_list = {}
if table.count(baseAttr) > 0 then
table.insert(self.all_att_sort_list,{attr_type = 1,data=baseAttr})
end
if strengthenAttr and table.count(strengthenAttr) > 0 then
local Attr = self:GetBaseAttr(strengthenAttr)
for i, v in ipairs(Attr) do
v.name = "强化" .. v.name
self.IsHaveStrengthen = true
end
if #Attr > 0 then
table.insert(self.all_att_sort_list,{attr_type = 2,data=Attr})
end
end
if appendAttr and table.count(appendAttr) > 0 then
local Attr = self:GetBaseAttr(appendAttr)
for i, v in ipairs(Attr) do
v.name = "追加" .. v.name
end
table.insert(self.all_att_sort_list,{attr_type = 3,data=Attr})
end
if originMagicAttrs and table.count(originMagicAttrs) > 0 then
local magicAttr = self:GetBaseAttr(originMagicAttrs)
for i, v in ipairs(magicAttr) do
table.insert(self.all_info, v)
end
end
if gemSkills and table.count(gemSkills) > 0 then
table.insert(self.all_info, { name = "装备技能", value = "" })
for i, v in ipairs(gemSkills) do
local skill_id = v.skillId
local skill_name = SL:GetConfig("cfg_skill", skill_id).name
---@type cfg_skill_info_column
local skill_info_tbl = SL:GetConfig("cfg_skill_info", skill_id, "skillID")
table.insert(self.all_info, { name = string.format("%s(魔力:%s)", skill_name, skill_info_tbl.costMp), value = "" })
end
end
if luckAttrs and table.count(luckAttrs) > 0 then
table.insert(self.all_info, { title = "tips_attribute12" })
local Attr = self:GetBaseAttr(luckAttrs)
for i, v in ipairs(Attr) do
v.color = "#50C2FD"
table.insert(self.all_info, v)
end
end
local entryAttr = SL:GetEquipValue(EMetaVarGetKey.EQUIP_ENTRY_ATTR, self.args.equip_pos, self.args.cfgId, self.args.id)
if entryAttr and table.count(entryAttr) > 0 then
local Attr = self:GetBaseAttr(entryAttr)
for i, v in ipairs(Attr) do
if v.value and not string.isNullOrEmpty(v.value) then
v.name = v.name .. "+" .. v.value
v.value = ""
end
end
table.insert(self.all_att_sort_list,{attr_type = 4,data=Attr})
else
--首充装备特殊处理
if self.args.info and self.args.info.firstCharge and table.contains(self.firstCharge_list, self.args.cfgId) then
local zhuo_att = SL:GetConfig("cfg_equip_entryLib", self.args.cfgId).att1
local zhuo_yue_group = zhuo_att[1][1]
local zhuo_att_list = SL:FindConfigs("cfg_equip_att", "group", zhuo_yue_group)
local first_entryAttr = {}
for ii, one_data in ipairs(zhuo_att_list) do
local att_list = one_data.att[1]
table.insert(first_entryAttr, { type = att_list[1], num = att_list[2] })
end
if first_entryAttr and table.count(first_entryAttr) > 0 then
table.insert(self.all_info, { title = "tips_attribute3" })
local Attr = self:GetBaseAttr(first_entryAttr)
for i, v in ipairs(Attr) do
if v.value and not string.isNullOrEmpty(v.value) then
v.name = v.name .. "+" .. v.value
v.value = ""
end
end
table.insert(self.all_att_sort_list,{attr_type = 4,data=Attr})
end
end
end
local regenerateToAttr = SL:GetEquipValue(EMetaVarGetKey.EQUIP_REGENERATE_ATTR, self.args.equip_pos, self.args.cfgId, self.args.id)
if regenerateToAttr and table.count(regenerateToAttr) > 0 then
local Attr = self:GetBaseAttr(regenerateToAttr)
table.insert(self.all_att_sort_list,{attr_type = 5,data=Attr})
end
-- 大天使装备处理
if SL:GetConfig("cfg_item", self.args.cfgId, "id").wearBarID[1] == EEquipWearBarType.Archange then
local datianshi_att_list = {}
table.insert(datianshi_att_list,{ name = "攻击野外怪物即可获得经验值", value = "", color = "#e6e600" ,color_not_change = true})
-- 装备有无
if not self.args.id or not InfoManager.archangeEquipInfo:IsHaveArchangeEquip(self.args.id) then
table.insert(datianshi_att_list,{ name = "满级属性", value = "", color = "#1add1f" ,color_not_change = true})
local attList, _ = InfoManager.archangeEquipInfo:GetMaxAtt(self.args.cfgId)
local maxAtt = nil
local minAtt = nil
for i, v in pairs(attList) do
if v[1] == 200011 then
minAtt = v[2]
elseif v[1] == 200021 then
maxAtt = v[2]
else
table.insert(datianshi_att_list,{ name = SL:GetConfig("cfg_att_info", v[1], "id").name, value = "+" .. tostring(v[2]), color = "#dce1e5" })
end
end
if minAtt and maxAtt then
table.insert(datianshi_att_list,{ name = "攻击力", value = tostring(minAtt).."~"..tostring(maxAtt), color = "#dce1e5" })
end
else
--有装备
local levelInfo = InfoManager.archangeEquipInfo:GetEquipLevelInfo(self.args.id)
local arcLevel = levelInfo.level
local exp = levelInfo.exp
local _, maxLevel = InfoManager.archangeEquipInfo:GetMaxAtt(self.args.cfgId)
local curRank = InfoManager.archangeEquipInfo:GetEquipLevelInfo(self.args.id).rank
local curMaxLevel = InfoManager.archangeEquipInfo:GetMaxLevel(curRank,self.args.cfgId)
---该装备所在的组
local group = SL:GetConfig("cfg_equip_angelGroup", self.args.cfgId, "id").angelEquipGroup
---@type cfg_equip_angelAtt_column
local attTbl = SL:GetConfigTwoKeys("cfg_equip_angelAtt", group, arcLevel, "ornamentsGroup", "lv")
local basicAtt = attTbl.basicAtt
local levelinfo = tostring(exp) .. "/" .. tostring(attTbl.lvDeplete)
self.archenge["maxExp"] = attTbl.lvDeplete
self.archenge["isMaxLv"] = false
table.insert(datianshi_att_list,{ name = "当前阶数等级上限", value = tostring(curMaxLevel), color = "#e6e600" ,color_not_change = true})
-- archenge类型仅为大天使装备的特殊处理,若使用进度条,请使用loadingbar类型,如:{loadingbar = { name = "lv." .. tostring(arcLevel), value = (exp / attTbl.lvDeplete) * 100, valueInfo = levelinfo }}
if arcLevel == maxLevel then
self.archenge["isMaxLv"] = true
--该装备是否满级
table.insert(datianshi_att_list,{ name = "装备已成长至满级", value = "", color = "#1add1f" ,color_not_change = true})
levelinfo = "已满级"
table.insert(datianshi_att_list,{ archenge = { name = "Lv." .. tostring(arcLevel) .. "", value = 100, valueInfo = levelinfo ,color_not_change = true} })
else
table.insert(datianshi_att_list,{ archenge = { name = "Lv." .. tostring(arcLevel) .. "", value = (exp / attTbl.lvDeplete) * 100, valueInfo = levelinfo ,color_not_change = true} })
end
local maxAtt = nil
local minAtt = nil
for i, v in pairs(basicAtt) do
if v[1] == 200011 then
minAtt = v[2]
elseif v[1] == 200021 then
maxAtt = v[2]
else
table.insert(datianshi_att_list,{ name = SL:GetConfig("cfg_att_info", v[1], "id").name, value = "+" .. tostring(v[2]), color = "#dce1e5" })
end
end
if minAtt and maxAtt then
table.insert(datianshi_att_list,{ name = "攻击力", value = tostring(minAtt).."~"..tostring(maxAtt), color = "#dce1e5" })
end
if arcLevel ~= maxLevel then
table.insert(datianshi_att_list,{ name = "Lv." .. tostring(arcLevel + 1) .. "", value = "下一级效果", color = "#ff2323" ,color_not_change = true})
--不满级展示下一级
arcLevel = arcLevel + 1
---该装备所在的组
group = SL:GetConfig("cfg_equip_angelGroup", self.args.cfgId, "id").angelEquipGroup
basicAtt = SL:GetConfigTwoKeys("cfg_equip_angelAtt", group, arcLevel, "ornamentsGroup", "lv").basicAtt
maxAtt = nil
minAtt = nil
for i, v in pairs(basicAtt) do
if v[1] == 200011 then
minAtt = v[2]
elseif v[1] == 200021 then
maxAtt = v[2]
else
table.insert(datianshi_att_list,{ name = SL:GetConfig("cfg_att_info", v[1], "id").name, value = "+" .. tostring(v[2]), color = "#999999",color_not_change=true })
end
end
if minAtt and maxAtt then
table.insert(datianshi_att_list,{ name = "攻击力", value = tostring(minAtt).."~"..tostring(maxAtt), color = "#999999",color_not_change=true })
end
end
end
if table.count(datianshi_att_list) > 0 then
table.insert(self.all_att_sort_list,{attr_type = 8,data=datianshi_att_list})
end
end
local equipInfoList, suitEffect = SL:GetSuitEquipInfoList(self.args.cfgId)
local color1 = "#e6e600"
local color2 = "#999999"
if equipInfoList and suitEffect then
local all_suit = {}
local suitIdList = SL:GetMetaValue(EMetaVarGetKey.GET_EQUIPSUIT_BY_ID, self.args.cfgId)
local suitId = suitIdList[1]
local suitName = SL:GetConfig("cfg_equip_suit", suitId).name
local activeNUm = SL:GetSuitActiveCount(suitId)
local allNUm = #equipInfoList
suitName = suitName .. "(" .. activeNUm .. "/" .. allNUm .. ")"
table.insert(all_suit, { name = suitName, value = "", color = "#D5811E" ,color_not_change = true})
for i, v in ipairs(equipInfoList) do
local _name = SL:GetConfig("cfg_item", v.cfgId).name
local oneInfo = { name = _name, value = "" }
if v.isActive then
oneInfo.color = color1
else
oneInfo.color = color2
oneInfo.color_not_change = true
end
table.insert(all_suit, oneInfo)
end
table.insert(all_suit, { name = "套装效果", value = "", color = "#D5811E" ,color_not_change = true})
local Attr = self:GetAttr(suitEffect)
for i, v in ipairs(Attr) do
if v.isActive then
v.color = color1
else
v.color = color2
v.color_not_change = true
end
table.insert(all_suit, v)
end
table.insert(self.all_att_sort_list,{attr_type = 6,data=all_suit})
end
if itemInfo then
local regenerateLevel = EquipFunc.GetEquipRegenerateLevel(itemInfo)
if regenerateLevel > 0 then
local regenerateAttr = EquipFunc.GetEquipRegenerateAttr(itemInfo)
if regenerateAttr and table.count(regenerateAttr) > 0 then
local Attr = self:GetBaseAttr(regenerateAttr)
table.insert(self.all_att_sort_list,{attr_type = 7,data=Attr})
end
end
end
---如果是首饰 特殊处理(能升级的首饰
if SL:HasConfig('cfg_equip_ornamentsMain', self.args.cfgId) then
local ornament_tbl = SL:GetConfig('cfg_equip_ornamentsMain', self.args.cfgId)
if ornament_tbl then
self:SetJewelryTips()
end
end
---大天使装备镶嵌的圣杯处理
local archangeGrailInfo = InfoManager.archangeEquipInfo:GetEquipGrail(self.args.id)
local shengbei = {}
if self.args.id and not table.isNullOrEmpty(archangeGrailInfo) then
local archangeGrailInfoSort = {}
for i, v in pairs(archangeGrailInfo) do
table.insert(archangeGrailInfoSort, { id = i, info = v })
end
table.sort(archangeGrailInfoSort, function(grailA, grailB)
return grailA.info.grailPosition < grailB.info.grailPosition
end)
for i, v in pairs(archangeGrailInfoSort) do
name = SL:GetConfig("cfg_item", v.info.itemConfigId, "id").name
local strengthLv = InfoManager.archangeEquipInfo:GetGrailStrengthLv(tonumber(v.id))
if strengthLv > 0 then
name = name .. "+"..tostring(strengthLv)
end
local color = E_ArchangelGrailQualityColor[SL:GetConfig("cfg_equip_angelGrail", v.info.itemConfigId, "id").grailQuality]
table.insert(shengbei, { itemInfo = { itemId = v.info.itemConfigId, name = name, color = color } })
end
end
if #shengbei > 0 then
table.insert(self.all_att_sort_list, { attr_type = 9, data = shengbei })
end
self:GetGemAtt()
--SL:LogTable(self.all_gem_att,true)
if self.all_gem_att and #self.all_gem_att > 0 then
local gem_att = self:GetBaseAttr(self.all_gem_att)
table.insert(self.all_att_sort_list, { attr_type = 5, data = gem_att })
end
----注意-----新加属性放到这里,然后在下面排序----------------------cfg_equip_tips----------------------------------
----拿到所有属性后进行排序
table.sort(self.all_att_sort_list, function(a, b)
local sort_a = SL:GetConfig("cfg_equip_tips", a.attr_type).sort
local sort_b = SL:GetConfig("cfg_equip_tips", b.attr_type).sort
return sort_a < sort_b
end)
----排序后添加标题和设置颜色
for i, one_data in ipairs(self.all_att_sort_list) do
if table.count(one_data.data) > 0 then
local one_tab = SL:GetConfig("cfg_equip_tips", one_data.attr_type)
if one_tab.show and one_tab.show == 1 then
local bg_str
if not string.isNullOrEmpty(one_tab.bg) then
bg_str = one_tab.bg
end
if not string.isNullOrEmpty(one_tab.picture) then
table.insert(self.all_info, { is_title = true, title = one_tab.picture, bg = bg_str })
elseif not string.isNullOrEmpty(one_tab.text) then
local text_color = tostring(one_tab.textColor)
table.insert(self.all_info, { is_title = true, name = one_tab.text, value = "", color = text_color, bg = bg_str })
end
for j, v in ipairs(one_data.data) do
--设置属性颜色
if not v.color_not_change then
v.color = tostring(one_tab.attColor)
if one_tab.attNameColor and not string.isNullOrEmpty(v.name) then
local color_1 = SL:GetConfig("cfg_color",one_tab.attNameColor).color
v.name = "" .. v.name .. ""
end
end
v.bg = one_tab.attBg
table.insert(self.all_info, v)
end
end
end
end
local bottomDesc = SL:GetMetaValue(EMetaVarGetKey.ITEM_BOTTOM_DESC, self.args.cfgId)
if not string.isNullOrEmpty(bottomDesc) and modelHeight == 0 then
table.insert(self.all_info, { name = "", value = "" })
GUI:Text_setString(self.view.tem_info, bottomDesc)
local x_1, y_1 = GUI:getSizeDelta(self.view.tem_info)
table.insert(self.all_info, { info = bottomDesc, value = "", height = y_1 })
end
local tab_item = SL:GetConfig("cfg_item", self.args.cfgId, "id")
local recoveryGroup = tab_item.recoveryGroup
if recoveryGroup ~= 0 then
local recoveryUp = tab_item.recoveryUp / 100
local material = SL:GetConfig("cfg_recovery", recoveryGroup, "id").material
if material then
local materialList = material[1]
local name1 = SL:GetConfig("cfg_item", materialList[1], "id").name
local value1 = materialList[2] * (1 + recoveryUp)
value1 = Mathf.Floor(value1)
table.insert(self.all_info, { name = "回收价格:", value = value1 .. name1, color = "#756952" })
end
end
top_num = top_num + #self.need_career + #self.useAttLimit_list
if top_num < 4 then
top_num = 4
end
local top_add = (top_num - 4) * 23
--local middle_height = #self.all_info * 25
local middle_height = 0
for i, v in ipairs(self.all_info) do
if v.is_title then
middle_height = middle_height + 31
elseif v.height then
middle_height = middle_height + v.height
else
middle_height = middle_height + 22
end
end
if middle_height < 100 then
middle_height = 100
end
if middle_height > 205 then
middle_height = 205
end
local all_add_height = top_add + middle_height
local max_h = 355
if all_add_height > max_h then
middle_height = middle_height - (all_add_height - max_h)
end
local change_y = (max_h - middle_height) / 2
change_y = Mathf.Floor(change_y)
local top_y = 227 - change_y + top_add + (modelHeight / 2)
local bottomDescHeightEnd = bottomDescHeight
if bottomDescHeightEnd > 0 then
bottomDescHeightEnd = bottomDescHeightEnd - 10--底部有文字情况下调整一下按钮和文字的间隙
end
local bottom_y = change_y - 275 - (modelHeight / 2) - (bottomDescHeightEnd / 2)
local bg_height = middle_height + 295 + top_add + modelHeight
local bg_y = Mathf.Floor(top_add / 2)
GUI:setContentSize(self.view.info_view, 360, middle_height)
GUI:setPositionY(self.view.equippaneltop, top_y)
GUI:setPositionY(self.view.equippaneltop_bottom, bottom_y)
GUI:setContentSize(self.view.panel_bg, 370, bg_height)
GUI:setPositionY(self.view.panel_bg, bg_y)
if modelHeight > 0 then
--有模型的情况下调整一下属性栏位置
local info_view_Y = GUI:getPositionY(self.view.info_view)
GUI:setPositionY(self.view.info_view, info_view_Y + (modelHeight / 2))
end
--模型初始位置
GUI:setPositionY(self.view.model1, -190)
--守护处理
if self.type == E_ItemType.Equip and self.subType == E_ItemSubType_Equip.ShouHu then
local specialShowData = InfoManager.guardPetInfo:GetGuardSpecialShowData(self.args.cfgId)
table.concatTable(self.all_info, specialShowData)
local maxHp = SL:GetConfig("cfg_equip_guard", self.args.cfgId).hp
local hp = InfoManager.guardPetInfo:GetGuardHp(self.args.id)
GUI:Text_setTextColor(self.view.guardHp, "#ff8a00")
hp = (hp == 0 and maxHp or hp)
if maxHp == 0 then
GUI:Text_setString(self.view.guardHp, "生命值:无限")
else
if hp then
GUI:Text_setString(self.view.guardHp, string.format("生命值:%d/%d", hp, maxHp))
end
end
GUI:setVisible(self.view.guardHp, true)
GUI:setVisible(self.view.duanzaobtn, false)
else
GUI:setVisible(self.view.duanzaobtn, true)
GUI:setVisible(self.view.guardHp, false)
end
if self.args.info and self.args.info.hideBtn then
GUI:setVisible(self.view.bag_root, false)
GUI:setVisible(self.view.equip_root, false)
elseif self.args.equip_pos == "bag" or GUI:GetUI("dev/outui/Equip/Panel/KLEquipOverlay/KLEquipOverlayPanel") then
GUI:setVisible(self.view.bag_root, true)
GUI:setVisible(self.view.equip_root, false)
self:bagBtnUpdate()
elseif self.args.equip_pos == "depots" then
GUI:setVisible(self.view.bag_root, true)
GUI:setVisible(self.view.equip_root, false)
self:depotsBtnUpdate()
elseif self.args.equip_pos == "equip" then
GUI:setVisible(self.view.equip_root, true)
GUI:setVisible(self.view.bag_root, false)
local wearBarId = SL:GetEquipValue(EMetaVarGetKey.EQUIP_WEAR_BAR_ID, nil, self.args.cfgId)
if wearBarId[1] and wearBarId[1] > 2 then
GUI:setVisible(self.view.duanzaobtn, false)
elseif self.subType == 14 then
GUI:setVisible(self.view.duanzaobtn, false)
else
GUI:setVisible(self.view.duanzaobtn, true)
end
if self.subType == 10 or self.subType == 11 or self.subType == 12 then
GUI:setVisible(self.view.tuoxiabtn, false)
GUI:setVisible(self.view.shengjibtn, true)
else
GUI:setVisible(self.view.tuoxiabtn, true)
GUI:setVisible(self.view.shengjibtn, false)
end
elseif self.args.equip_pos == "synthesis" then
GUI:setVisible(self.view.left_btn, true)
GUI:setVisible(self.view.right_btn, true)
GUI:setVisible(self.view.equip_root, false)
GUI:Button_setTitleText(self.view.left_btn, "取消")
GUI:Button_setTitleText(self.view.right_btn, "替换")
else
GUI:setVisible(self.view.equip_root, false)
GUI:setVisible(self.view.bag_root, false)
--没有下方二个按钮的模型位置(equip_pos不是bag)
GUI:setPositionY(self.view.model1, -220)
end
GUI:DataListUpdateData(self.view.equipzhiyeNeedData)
GUI:DataListUpdateData(self.view.equipNeedData)
GUI:DataListUpdateData(self.view.all_info_data)
--if #self.left_all >0 then
--GUI:DataListUpdateData(self.view.left_data_list)
--end
--if #self.right_all >0 then
-- GUI:DataListUpdateData(self.view.right_data_list)
--end
if self.args.equip_pos ~= "equip" and not (self.args.info and self.args.info.hideComparsion) then
local Comparsion_data = SL:GetCompareEquip(self.args.cfgId)
if Comparsion_data and Comparsion_data.cfgId and Comparsion_data.id then
--SL:OpenEquipTipsComparsion(Comparsion_data.cfgId, Comparsion_data.id)
GUI:UIPanel_Open("dev/ui/Tips/Panel/KLUIEquipTipsComparsion/KLUIEquipTipsComparsionPanel", nil, nil, { equip_pos = "equip", cfgId = Comparsion_data.cfgId, id = Comparsion_data.id, last_height = bg_height })
end
end
EquipFunc.tipsHeight = bg_height
local bg_str = ""
local item_bg_str = ""
local bg_effect_id = 0
local item_effect_id = 0
if tab_item.itemTips and tab_item.itemTips ~= 0 then
local style_tab = SL:GetConfig("cfg_tips_style",tab_item.itemTips)
if not string.isNullOrEmpty(style_tab.background) then
bg_str = style_tab.background
end
if not string.isNullOrEmpty(style_tab.itemBg) then
item_bg_str = style_tab.itemBg
end
bg_effect_id = style_tab.borderEffect
item_effect_id = style_tab.itemBorderEffect
end
if string.isNullOrEmpty(bg_str) then
GUI:Image_loadTexture(self.view.panel_bg, "img_interface_main122", "Atlas/Common.spriteatlas")
else
GUI:Image_loadTexture(self.view.panel_bg, bg_str, "Atlas/UITips.spriteatlas")
end
--GUI:Image_loadTexture(self.view.panel_bg, bg_str, "Atlas/Common.spriteatlas")
if string.isNullOrEmpty(item_bg_str) then
GUI:setVisible(self.view.item_bg, false)
else
GUI:setVisible(self.view.item_bg, true)
GUI:Image_loadTexture(self.view.item_bg, item_bg_str, "Atlas/UITips.spriteatlas")
end
if bg_effect_id and bg_effect_id ~= 0 then
local effect_tbl = SL:GetConfig("cfg_model_effect",bg_effect_id)
local m_y = 370/523 * bg_height
m_y = math.floor( m_y )
local mscale = "240,"..m_y..",1"
GUI:Model_setSrc(self.view.bg_effect_model,effect_tbl.path,mscale)
GUI:setVisible(self.view.bg_effect_model, true)
else
GUI:setVisible(self.view.bg_effect_model, false)
end
if item_effect_id and item_effect_id ~= 0 then
local effect_tbl = SL:GetConfig("cfg_model_effect",bg_effect_id)
GUI:Model_setSrc(self.view.item_effect_model,effect_tbl.path)
GUI:setVisible(self.view.item_effect_model, true)
else
GUI:setVisible(self.view.item_effect_model, false)
end
end
---注册UI事件和服务器消息
function this:RegistEvents()
--GUI:AddOnClickEvent(self.view.background_close, self, self.CloseEquipTips)
-- GUI:AddOnClickEvent(self.view.left_btn, self, self.BtnLeftOnClick)
-- GUI:AddOnClickEvent(self.view.right_btn, self, self.BtnRightOnClick)
-- GUI:AddOnClickEvent(self.view.tuoxiabtn, self, self.TakeOffEquip)
-- GUI:AddOnClickEvent(self.view.shengjibtn, self, self.ShengJi)
-- GUI:AddOnClickEvent(self.view.duanzaobtn, self, self.ForgeOnClick)
SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_ANGEL_EQUIPMENT_ATTR_INFO, self.RES_ANGEL_EQUIPMENT_ATTR_INFO, self) -- 大天使装备需要等一个回调
end
function this:CloseEquipTips()
GUI:UIPanel_Close("dev/ui/Tips/Panel/KLUIEquipTips/KLUIEquipTipsComparsionPanel")
GUI:UIPanel_Close("dev/ui/Tips/Panel/KLUIEquipTipsComparsion/KLUIEquipTipsComparsionPanel")
local itemGetPathPanel = GUI:GetUI("dev/ui/Common/Panel/KLItemGetPath/KLItemGetPathPanel")
if itemGetPathPanel then
GUI:UIPanel_Close("dev/ui/Common/Panel/KLItemGetPath/KLItemGetPathPanel")
end
end
function this:Close()
if self.Schedule1 then
SL:UnSchedule(self.Schedule1)
end
end
function this:SetLiuGuang(equipInfo)
local liuGuangId = nil
if equipInfo then
liuGuangId = EquipFunc.GetEquipLiuGuangId(equipInfo)
end
if liuGuangId then
GUI:SetStreamAttr(self.view.equip_tips_item, liuGuangId)
else
GUI:ResetStreamAttr(self.view.equip_tips_item)
end
end
function this:GetCareer(job)
local all_career = {}
if job and table.count(job) > 0 then
local i = 1
while i <= table.count(job) do
local str = ""
local t_str = ""
if i == 1 then
t_str = "需要职业:"
end
local baseCareer = job[i][1]
local careerLevel = job[i][2]
local tbl = SL:GetConfigMultiKeys('cfg_career',
baseCareer,
careerLevel,
'baseCareer',
'careerRank'
)
if baseCareer == SL:MeData_GetCareer().baseCareer and SL:MeData_GetCareer().careerRank >= careerLevel then
str = str .. "" .. tbl.name .. ""
else
str = str .. "" .. tbl.name .. ""
end
if string.len(tbl.name) >= 15 then
table.insert(all_career, { title = t_str, name = str })
i = i + 1
else
if job[i + 1] then
local baseCareer2 = job[i + 1][1]
local careerLevel2 = job[i + 1][2]
local tbl2 = SL:GetConfigMultiKeys('cfg_career',
baseCareer2,
careerLevel2,
'baseCareer',
'careerRank'
)
if baseCareer2 == SL:MeData_GetCareer().baseCareer and SL:MeData_GetCareer().careerRank >= careerLevel2 then
str = str .. " " .. tbl2.name .. ""
else
str = str .. " " .. tbl2.name .. ""
end
end
table.insert(all_career, { title = t_str, name = str })
i = i + 2
end
end
end
return all_career
end
function this:NeedCareerDataListItemCountFunc()
return #self.need_career
end
function this:NeedCareerDataListItemGetFunc(realIndex)
end
function this:NeedCareerDataListItemInitFunc(realIndex, kmlcontrol)
end
function this:NeedCareerDataListItemUpdateFunc(realIndex, kmlcontrol)
local career = self.need_career[realIndex + 1]
local title = GUI:GetChildControl(self.view.equipzhiyeNeedData, realIndex, "title")
GUI:Text_setString(title, career.title)
local name = GUI:GetChildControl(self.view.equipzhiyeNeedData, realIndex, "name")
GUI:Text_setString(name, career.name)
end
function this:GetUseAttLimit(useAttLimit)
local useAttLimit_list = {}
self.useAttLimit = {}
if useAttLimit and table.count(useAttLimit) > 0 then
for i, v in ipairs(useAttLimit) do
local attId = v[1]
local attValue = v[2]
local my_attValue = SL:MeData_GetSpecialAttrValue(attId)
local name = SL:GetConfig("cfg_att_info", attId).name
local name_str = "所需" .. name .. ":"
local value_str = ""
local entryAttr = SL:GetEquipValue(EMetaVarGetKey.EQUIP_ENTRY_ATTR, self.args.equip_pos, self.args.cfgId, self.args.id)
local offsetValue = self:GetAttrValueOffset(attId, attValue, entryAttr)
self.useAttLimit[attId] = -offsetValue
attValue = attValue - offsetValue
if my_attValue >= attValue then
value_str = tostring(attValue)
else
local add_value = attValue - my_attValue
name_str = "" .. name_str .. ""
value_str = "" .. attValue .. "(还需" .. add_value .. ")" .. ""
end
if attValue ~= 0 then
table.insert(useAttLimit_list, { name = name_str, value = value_str })
end
end
end
return useAttLimit_list
end
function this:NeedDataListItemCountFunc()
return #self.useAttLimit_list
end
function this:NeedDataListItemGetFunc(realIndex)
end
function this:NeedDataListItemInitFunc(realIndex, kmlcontrol)
end
function this:NeedDataListItemUpdateFunc(realIndex, kmlcontrol)
local data = self.useAttLimit_list[realIndex + 1]
local name = GUI:GetChildControl(self.view.equipNeedData, realIndex, "name")
GUI:Text_setString(name, data.name)
local value = GUI:GetChildControl(self.view.equipNeedData, realIndex, "value")
GUI:Text_setString(value, data.value)
end
function this:GetBaseAttr(baseAttr)
local baseAttrList = {}
if not baseAttr then
return baseAttrList
end
local max1
local min1
local max2
local min2
local max3
local min3
local max4
local min4
local max5
local min5
for i, v in ipairs(baseAttr) do
if v.type == 201011 then
max1 = v
elseif v.type == 201021 then
min1 = v
elseif v.type == 202011 then
max2 = v
elseif v.type == 202021 then
min2 = v
elseif v.type == 205021 then
max3 = v
elseif v.type == 205011 then
min3 = v
elseif v.type == 203021 then
max4 = v
elseif v.type == 203011 then
min4 = v
elseif v.type == 200011 then
min5 = v
elseif v.type == 200021 then
max5 = v
end
end
if max1 and min1 then
local _value = min1.num .. "~" .. max1.num
table.insert(baseAttrList, { name = "攻击力", value = _value })
end
if max2 and min2 then
local _value = min2.num .. "~" .. max2.num
table.insert(baseAttrList, { name = "魔法攻击力", value = _value })
end
if max3 and min3 then
local _value = min3.num .. "~" .. max3.num
table.insert(baseAttrList, { name = "诅咒攻击力", value = _value })
end
if max4 and min4 then
local _value = min4.num .. "~" .. max4.num
table.insert(baseAttrList, { name = "天鹰攻击力", value = _value })
end
if max5 and min5 then
local _value = min5.num .. "~" .. max5.num
table.insert(baseAttrList, { name = "攻击力", value = _value })
end
for i, v in ipairs(baseAttr) do
if v.type == 201011 or v.type == 201021 or v.type == 202011 or v.type == 202021 or v.type == 205021 or v.type == 205011 or v.type == 203021 or v.type == 203011 or v.type == 200011 or v.type == 200021 then
else
local _name = SL:GetConfig("cfg_att_info", v.type).name
local _value = self:GetAttrValue(v.type, v.num)
if self:chenckAttrShow(v.type) then
if not self:chenckAttrValue(v.type) then
_value = ""
end
table.insert(baseAttrList, { name = _name, value = _value, type = v.type })
end
end
end
return baseAttrList
end
function this:GetAttr(baseAttr)
local baseAttrList = {}
if not baseAttr then
return baseAttrList
end
for i, one in pairs(baseAttr) do
for j, v in ipairs(one) do
local nameAttr = SL:GetConfig("cfg_att_info", v.attId).name
local _value = self:GetAttrValue(v.attId, v.attNum)
if self:chenckAttrShow(v.attId) then
_value = nameAttr .. "+" .. _value
if not self:chenckAttrValue(v.attId) then
_value = nameAttr
end
local _name = i .. "件套效果"
table.insert(baseAttrList, { name = _name, value = _value, isActive = v.isActive })
end
end
end
return baseAttrList
end
function this:chenckAttrShow(attId)
return true
end
function this:chenckAttrValue(attId)
local attShow = SL:GetConfig("cfg_att_info", attId).attShow
if attShow == 1 then
return true
end
return false
end
function this:GetAttrValue(attId, attValue)
local remarks = SL:GetConfig("cfg_att_info", attId).remarks
if remarks == 1 then
return tostring(attValue)
else
local value = attValue / 100
local value_str = value .. "%"
return value_str
end
end
function this:EquipAttrDataListItemCountFunc()
return #self.all_info
end
function this:EquipAttrDataListItemGetFunc(realIndex)
end
function this:EquipAttrDataListItemInitFunc(realIndex, kmlcontrol)
end
function this:EquipAttrDataListItemUpdateFunc(realIndex, kmlcontrol)
local data = self.all_info[realIndex + 1]
local root = GUI:GetChildControl(self.view.all_info_data, realIndex, "root")
local title = GUI:GetChildControl(self.view.all_info_data, realIndex, "title")
local di = GUI:GetChildControl(self.view.all_info_data, realIndex, "di")
local value = GUI:GetChildControl(self.view.all_info_data, realIndex, "value")
local desc = GUI:GetChildControl(self.view.all_info_data, realIndex, "desc")
local more_info = GUI:GetChildControl(self.view.all_info_data, realIndex, "more_info")
local loading_name = GUI:GetChildControl(self.view.all_info_data, realIndex, "loading_name")
local info_loadingbar = GUI:GetChildControl(self.view.all_info_data, realIndex, "info_loadingbar")
local loadingbar_text = GUI:GetChildControl(self.view.all_info_data, realIndex, "loadingbar_text")
local item = GUI:GetChildControl(self.view.all_info_data, realIndex, "item")
local itemname = GUI:GetChildControl(self.view.all_info_data, realIndex, "itemname")
if data.bg and not string.isNullOrEmpty(data.bg) then
GUI:Image_loadTexture(di, data.bg, "Atlas/UIEquipInfoPanel.spriteatlas")
else
GUI:Image_loadTexture(di, "img_tips_shuxing_di", "Atlas/UIEquipInfoPanel.spriteatlas")
end
if data.is_title then
GUI:setContentSize(root, 350, 25)
GUI:setVisible(di, true)
GUI:setVisible(item, false)
GUI:setVisible(itemname, false)
GUI:setVisible(desc, false)
GUI:setVisible(more_info, false)
GUI:setVisible(info_loadingbar, false)
GUI:setVisible(loading_name, false)
if not string.isNullOrEmpty(data.title) then
GUI:setVisible(title, true)
GUI:Image_loadTexture(title, data.title, "Atlas/TipsAttTitle.spriteatlas")
GUI:setVisible(value, false)
else
GUI:setVisible(title, false)
GUI:setVisible(value, true)
local _name = nil
if not string.isNullOrEmpty(data.name) then
_name = data.name
else
_name = ""
end
local _value = nil
if not string.isNullOrEmpty(data.value) then
_value = data.value
else
_value = ""
end
local value_str = _name .. " " .. _value
GUI:Text_setString(value, value_str)
if data.color then
GUI:Text_setTextColor(value, data.color)
end
end
elseif data.info then
GUI:setContentSize(root, 350, data.height)
GUI:setVisible(title, false)
GUI:setVisible(item, false)
GUI:setVisible(itemname, false)
GUI:setVisible(di, false)
GUI:setVisible(value, false)
GUI:setVisible(more_info, true)
GUI:setVisible(info_loadingbar, false)
GUI:setVisible(loading_name, false)
GUI:Text_setString(more_info, data.info)
elseif data.loadingbar then
GUI:setContentSize(root, 350, 25)
GUI:setVisible(title, false)
GUI:setVisible(di, false)
GUI:setVisible(item, false)
GUI:setVisible(itemname, false)
GUI:setVisible(value, false)
GUI:setVisible(more_info, false)
GUI:setVisible(info_loadingbar, true)
GUI:setVisible(loading_name, true)
GUI:Text_setString(loading_name, data.loadingbar.name) -- 进度条前方文字
GUI:Text_setString(loadingbar_text, data.loadingbar.valueInfo) -- 进度条上方文字
GUI:SetLoadingbar_startper(info_loadingbar, data.loadingbar.value) -- 百分制
elseif data.archenge then
-- 大天使装备的特殊处理,已保证只执行一次!!!
GUI:setContentSize(root, 350, 25)
GUI:setVisible(title, false)
GUI:setVisible(di, false)
GUI:setVisible(item, false)
GUI:setVisible(itemname, false)
GUI:setVisible(value, false)
GUI:setVisible(more_info, false)
GUI:setVisible(info_loadingbar, true)
GUI:setVisible(loading_name, true)
self.archenge.loadingbar = info_loadingbar
self.archenge.valueInfo = loadingbar_text
self.archenge.loading_name = loading_name
GUI:Text_setString(loading_name, data.archenge.name) -- 进度条前方文字
GUI:Text_setString(loadingbar_text, data.archenge.valueInfo) -- 进度条上方文字
GUI:SetLoadingbar_startper(info_loadingbar, data.archenge.value) -- 百分制
--此协议为大天使装备的特殊处理,已保证只发送一次
if not self.archenge.isMaxLv then
SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_ANGEL_EQUIP_ATTR, { itemId = self.args.id, itemConfigId = self.args.cfgId })
end
elseif data.itemInfo then
GUI:setVisible(title, false)
GUI:setVisible(item, true)
GUI:setVisible(itemname, true)
GUI:setVisible(di, false)
GUI:setVisible(value, false)
GUI:setVisible(more_info, false)
GUI:setVisible(info_loadingbar, false)
GUI:setVisible(loading_name, false)
GUI:Item_setItemId(item, data.itemInfo.itemId)
GUI:Text_setTextColor(itemname, data.itemInfo.color)
GUI:Text_setString(itemname, data.itemInfo.name)
else
GUI:setContentSize(root, 350, 16)
GUI:setVisible(title, false)
GUI:setVisible(value, true)
GUI:setVisible(item, false)
GUI:setVisible(itemname, false)
GUI:setVisible(more_info, false)
GUI:setVisible(info_loadingbar, false)
GUI:setVisible(loading_name, false)
if string.isNullOrEmpty(data.bg) then
GUI:setVisible(di, false)
else
GUI:setVisible(di, true)
end
local _name = nil
if not string.isNullOrEmpty(data.name) then
_name = data.name
else
_name = ""
end
local _value = nil
if not string.isNullOrEmpty(data.value) then
_value = data.value
else
_value = ""
end
local value_str = _name .. " " .. _value
GUI:Text_setString(value, value_str)
if data.color then
GUI:Text_setTextColor(value, data.color)
end
if data.desc then
GUI:setVisible(desc, true)
GUI:Text_setString(desc, data.desc)
end
if data.descColor then
GUI:Text_setTextColor(desc, data.descColor)
end
end
end
function this:depotsBtnUpdate()
GUI:setVisible(self.view.left_btn, true)
GUI:Button_setTitleText(self.view.left_btn, "丢弃")
GUI:setVisible(self.view.right_btn, true)
GUI:Button_setTitleText(self.view.right_btn, "取出")
end
function this:bagBtnUpdate()
local leftButton = SL:GetEquipValue(EMetaVarGetKey.EQUIP_TIPS_LEFT_BUTTON, self.args.equip_pos, self.args.cfgId, self.args.id)
local rightButton = SL:GetEquipValue(EMetaVarGetKey.EQUIP_TIPS_RIGHT_BUTTON, self.args.equip_pos, self.args.cfgId, self.args.id)
local isDelete = SL:GetConfig("cfg_item", self.args.cfgId).isDelete
self.left_all = {}
self.left_all_item = {}
for i, v in ipairs(leftButton) do
-- for j, btn_type in ipairs(v) do
-- if btn_type == "9" and isDelete == 0 then
-- else
-- table.insert(self.left_all, btn_type)
-- end
-- end
local btn_type = v[1]
if btn_type == "9" and isDelete == 0 then
else
table.insert(self.left_all, v)
end
end
self.right_all = {}
self.right_all_item = {}
for i, v in ipairs(rightButton) do
-- for j, btn_type in ipairs(v) do
-- if btn_type == "9" and isDelete == 0 then
-- else
-- table.insert(self.right_all, btn_type)
-- end
-- end
local btn_type = v[1]
if btn_type == "9" and isDelete == 0 then
else
table.insert(self.right_all, v)
end
end
self.left_is_open = false
if #self.left_all < 1 then
GUI:setVisible(self.view.left_btn, false)
elseif #self.left_all == 1 then
GUI:setVisible(self.view.left_btn, true)
local str = self:getBtnName(self.left_all[1])
GUI:Button_setTitleText(self.view.left_btn, str)
else
GUI:setVisible(self.view.left_btn, true)
GUI:Button_setTitleText(self.view.left_btn, "更多")
GUI:DataListInitData(self.view.left_data_list, function()
return self:LeftDataListItemCountFunc()
end, function(realIndex)
return self:LeftDataListItemGetFunc(realIndex)
end, function(realIndex, kmlcontrol)
return self:LeftDataListItemInitFunc(realIndex, kmlcontrol)
end, function(realIndex, kmlcontrol)
return self:LeftDataListItemUpdateFunc(realIndex, kmlcontrol)
end)
end
self.right_is_open = false
if GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel") then
GUI:setVisible(self.view.right_btn, true)
GUI:Button_setTitleText(self.view.right_btn, "放入")
return
end
if GUI:GetUI("dev/outui/Equip/Panel/KLEquipOverlay/KLEquipOverlayPanel") then
GUI:setVisible(self.view.left_btn, false)
GUI:setVisible(self.view.right_btn, true)
GUI:Button_setTitleText(self.view.right_btn, "放置")
return
end
if #self.right_all < 1 then
GUI:setVisible(self.view.right_btn, false)
elseif #self.right_all == 1 then
GUI:setVisible(self.view.right_btn, true)
local str = self:getBtnName(self.right_all[1])
GUI:Button_setTitleText(self.view.right_btn, str)
else
GUI:setVisible(self.view.right_btn, true)
GUI:Button_setTitleText(self.view.right_btn, "更多")
GUI:DataListInitData(self.view.right_data_list, function()
return self:RightDataListItemCountFunc()
end, function(realIndex)
return self:RightDataListItemGetFunc(realIndex)
end, function(realIndex, kmlcontrol)
return self:RightDataListItemInitFunc(realIndex, kmlcontrol)
end, function(realIndex, kmlcontrol)
return self:RightDataListItemUpdateFunc(realIndex, kmlcontrol)
end)
end
end
function this:BtnLeftOnClick()
if self.args.equip_pos == "depots" then
local storeIndex = SL:GetDepotsIndex(self.args.id)
SL:ReqStoreGiveUpItemMessage(storeIndex)
self:CloseEquipTips()
return
end
--合成
if self.args.equip_pos == "synthesis" then
self:CloseEquipTips()
return
end
if #self.left_all < 1 then
elseif #self.left_all == 1 then
local btnType = self.left_all[1][1]
if not InfoManager.equipOrItemTipsInfo:IsCanOnClickButton(self.left_all[1]) then
return
end
if btnType == "0" then
self:CloseEquipTips()
elseif btnType == "2" then
self:CloseEquipTips()
elseif btnType == "3" then
self:PutOneEquip()
elseif btnType == "9" then
local name = SL:GetEquipValue(EMetaVarGetKey.EQUIP_NAME, self.args.equip_pos, self.args.cfgId, self.args.id)
SL:CommonTipsMessage({ showTips = "是否摧毁" .. name,
ui = self,
sureBtnText = "确定",
cancelBtnText = "取消",
callback = self.DestroyItem
})
elseif btnType == "10" then
self:JieFeng()
elseif btnType == "11" then
self:DiuQi()
elseif btnType == "13" then
self:Decompose()
elseif btnType == "99" then
self:OpenPanel(self.left_all[1])
end
else
if not self.left_is_open then
GUI:setVisible(self.view.left_btn_content, true)
self.left_is_open = true
GUI:DataListUpdateData(self.view.left_data_list)
else
GUI:setVisible(self.view.left_btn_content, false)
self.left_is_open = false
end
end
end
function this:PutOneEquip()
local ItemInfo = SL:GetPosItemInfo(self.args.equip_pos, self.args.cfgId, self.args.id)
SL:SetMetaValue(EMetaVarSetKey.SET_ROLE_ATTR_VALUE_OFFSET, self.useAttLimit)
if SL:CheckEquipWear(ItemInfo) == 1 then
SL:PutOnEquip(ItemInfo)
else
SL:SetMetaValue(EMetaVarSetKey.SET_ROLE_ATTR_VALUE_OFFSET, self.useAttLimit)
EquipInfo.ShowCantEquipTip(ItemInfo)
end
self:CloseEquipTips()
end
function this.DestroyItem(returnData)
local ui = returnData.ui
local index = SL:GetBagIndex(ui.args.id)
SL:ReqDestroyItemMessage(index)
ui:CloseEquipTips()
end
function this:JieFeng()
self:CloseEquipTips()
end
function this:DiuQi()
if self.args.equip_pos == "depots" then
local storeIndex = SL:GetDepotsIndex(self.args.id)
SL:ReqStoreGiveUpItemMessage(storeIndex)
else
local index = SL:GetBagIndex(self.args.id)
SL:ReqGiveUpItemMessage(index)
end
self:CloseEquipTips()
end
function this:Decompose()
self:CloseEquipTips()
GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel")
SL:OpenForgeGroupUI(EForgeGroupType.Decompose)
end
function this:TakeOffEquip()
if not self.args.id then
return
end
local panel = GUI:GetUI("dev/outui/Mount/Panel/KLMountEquip/KLMountEquipPanel")
if panel then
---@type cfg_item_column
local tbl = SL:GetConfig("cfg_item", self.args.cfgId, "id")
SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MOUNT_TAKE_OFF_ITEM, { self.args.mountId, tbl.subType })
else
local wearBarId, pos = SL:GetEquipWearBarIdPos(self.args.id)
SL:TakeOffEquip(wearBarId, pos)
end
self:CloseEquipTips()
end
function this:ShengJi()
if not InfoManager.equipOrItemTipsInfo:IsCanOnClickButton("", 10407) then
return
end
self:CloseEquipTips()
GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel")
SL:OpenForgeGroupUI(EForgeGroupType.Jewelry)
end
function this:ForgeOnClick()
if not InfoManager.equipOrItemTipsInfo:IsCanOnClickButton("", 10401) then
return
end
self:CloseEquipTips()
GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel")
local wearBarId, pos = SL:GetEquipWearBarIdPos(self.args.id)
SL:OpenForgeGroupUI(EForgeGroupType.Strength, pos)
end
function this:getBtnName(data)
local btn_type = data[1]
if btn_type == "0" then
return "取消"
elseif btn_type == "1" then
return "使用"
elseif btn_type == "2" then
return "回收"
elseif btn_type == "3" then
return "穿戴"
elseif btn_type == "4" then
return "强化"
elseif btn_type == "5" then
return "上架"
elseif btn_type == "6" then
return "合并"
elseif btn_type == "7" then
return "拆分"
elseif btn_type == "8" then
return "批量使用"
elseif btn_type == "9" then
return "摧毁"
elseif btn_type == "10" then
return "解封"
elseif btn_type == "11" then
return "丢弃"
elseif btn_type == "13" then
return "分解"
elseif btn_type == "14" then
return "装备"
elseif btn_type == "99" then
return data[2]
end
return ""
end
function this:LeftDataListItemCountFunc()
return #self.left_all
end
function this:LeftDataListItemGetFunc(realIndex)
local data = self.left_all[realIndex + 1]
local str = self:getBtnName(data)
local message = { equip_pos = self.args.equip_pos, cfgId = self.args.cfgId, id = self.args.id, btnType = data, nameStr = str }
local item = GUI:UIPanel_Open("dev/ui/Tips/Item/KLUITips/KLTipBtntem", self.view.left_data_list, self, message, true)
self.left_all_item[item.view.root] = item
return item.view.root
end
function this:LeftDataListItemInitFunc(realIndex, kmlcontrol)
end
function this:LeftDataListItemUpdateFunc(realIndex, kmlcontrol)
end
function this:BtnRightOnClick()
if self.args.equip_pos == "depots" then
local storeIndex = SL:GetDepotsIndex(self.args.id)
SL.Equip:ReqStoreTakeButtonMessage(storeIndex)
self:CloseEquipTips()
return
end
local depotPanel = GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel")
if depotPanel then
local BagIndex = SL:GetBagIndex(self.args.id)
if depotPanel.bagType == "privilege" then
SL.Equip:ReqBagPutStoreButtonMessage(BagIndex, SL:GetDepotsCurPage() + depotPanel.maxDepotsPages)
else
SL.Equip:ReqBagPutStoreButtonMessage(BagIndex, SL:GetDepotsCurPage())
end
self:CloseEquipTips()
return
end
--叠加
local overlay = GUI:GetUI("dev/outui/Equip/Panel/KLEquipOverlay/KLEquipOverlayPanel")
if overlay then
overlay:SelectItem(self.args.equip_pos, self.args.cfgId, self.args.id)
self:CloseEquipTips()
return
end
--合成
if self.args.equip_pos == "synthesis" then
SL:onLUAEvent(LUA_EVENT_TIPS_ONCLICK_REPLACE)
self:CloseEquipTips()
return
end
if #self.right_all < 1 then
elseif #self.right_all == 1 then
local btnType = self.right_all[1][1]
if not InfoManager.equipOrItemTipsInfo:IsCanOnClickButton(self.right_all[1]) then
return
end
if btnType == "0" then
self:CloseEquipTips()
elseif btnType == "1" then
self:UseItem()
elseif btnType == "2" then
self:CloseEquipTips()
elseif btnType == "3" then
self:PutOneEquip()
elseif btnType == "9" then
SL:CommonTipsMessage({ showTips = "是否摧毁" .. name,
ui = self,
sureBtnText = "确定",
cancelBtnText = "取消",
callback = self.DestroyItem
})
elseif btnType == "10" then
self:JieFeng()
elseif btnType == "11" then
self:DiuQi()
elseif btnType == "13" then
self:Decompose()
elseif btnType == "14" then
--准备坐骑道具
local panel = GUI:GetUI("dev/outui/Mount/Panel/KLMountEquip/KLMountEquipPanel")
if panel then
local BagIndex = SL:GetBagIndex(self.args.id)
---@type cfg_item_column
local tbl = SL:GetConfig("cfg_item", self.args.cfgId, "id")
SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MOUNT_PUT_ON_ITEM, { self.args.mountId, BagIndex, tbl.subType, self.args.cfgId, self.args.id })
else
GUI:UIPanel_Open("dev/outui/Mount/Panel/KLMountStore/KLMountStorePanel", nil, nil)
GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
end
self:CloseEquipTips()
elseif btnType == "99" then
self:OpenPanel(self.right_all[1])
end
else
if not self.right_is_open then
GUI:setVisible(self.view.right_btn_content, true)
self.right_is_open = true
GUI:DataListUpdateData(self.view.right_data_list)
else
GUI:setVisible(self.view.right_btn_content, false)
self.right_is_open = false
end
end
end
function this:UseItem()
---@type cfg_item_column
local itemTbl = SL:GetConfig("cfg_item", self.args.cfgId)
SL:UseItem(self.args.cfgId, self.args.id, self.args.count)
self:CloseEquipTips()
if itemTbl.type == E_ItemType.TriggerItem and itemTbl.subType == E_OutTriggerItemType.TransferRing then
GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
SL.HideMainPanel()
--守护处理,跳转到外观守护界面
GUI:UIPanel_Open("dev/outui/AppearGroup/Panel/KLAppearGroup/KLAppearGroupPanel", nil, nil, E_FashionType.TransferRing)
SL:ScheduleOnce(0.3, function()
SL:onLUAEvent(TRANSFER_RING_SELECT_ITEM, self.args.cfgId)
end)
elseif itemTbl.type == E_ItemType.TriggerItem and itemTbl.subType == E_OutTriggerItemType.GuardSkin then
GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
SL.HideMainPanel()
--守护处理,跳转到外观守护界面
GUI:UIPanel_Open("dev/outui/AppearGroup/Panel/KLAppearGroup/KLAppearGroupPanel", nil, nil, E_FashionType.Appear)
SL:ScheduleOnce(0.3, function()
SL:onLUAEvent(APPEAR_SELECT_ITEM, self.args.cfgId)
end)
end
end
function this:OpenPanel(btnType)
if #btnType < 3 then
return
end
self:CloseEquipTips()
GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel")
local panel = btnType[4]
if #btnType == 4 then
GUI:UIPanel_Open(panel)
elseif #btnType == 5 then
local num = btnType[5]
if tonumber(num) then
num = tonumber(num)
end
GUI:UIPanel_Open(panel, nil, nil, num)
elseif #btnType >= 7 then
local message = {}
for i = 5, #btnType - 2, 3 do
if btnType[i] and btnType[i + 1] and btnType[i + 2] then
if btnType[i + 1] == "string" then
message[btnType[i]] = btnType[i + 2]
else
message[btnType[i]] = tonumber(btnType[i + 2])
end
end
end
GUI:UIPanel_Open(panel, nil, nil, message)
end
SL.HideMainPanel()
end
function this:RightDataListItemCountFunc()
return #self.right_all
end
function this:RightDataListItemGetFunc(realIndex)
local data = self.right_all[realIndex + 1]
local str = self:getBtnName(data)
local message = { equip_pos = self.args.equip_pos, cfgId = self.args.cfgId, id = self.args.id, btnType = data, nameStr = str }
local item = GUI:UIPanel_Open("dev/ui/Tips/Item/KLUITips/KLTipBtntem", self.view.right_data_list, self, message, true)
self.right_all_item[item.view.root] = item
return item.view.root
end
function this:RightDataListItemInitFunc(realIndex, kmlcontrol)
end
function this:RightDataListItemUpdateFunc(realIndex, kmlcontrol)
end
---获取被属性衰减过的实际生效属性
---@param attrList CommonProtos.EquipEntryAttrVo[] 幸运属性
function this:GetAttrValueOffset(attrId, attrValue, attrList)
if not attrList then
return 0
end
local specialValue = 0
---@type cfg_att_special_column
local specialTbl = SL:GetConfig("cfg_att_special", tostring(attrId), "param")
if specialTbl and specialTbl.type[1] == 21 then
for _, v in pairs(attrList) do
if v.type == specialTbl.id then
specialValue = v.num
break
end
end
---@type cfg_att_info_column
local tbl = SL:GetConfig("cfg_att_info", specialTbl.id)
if tbl then
if tbl.remarks == 2 then
specialValue = attrValue * specialValue * 100
end
end
end
return specialValue
end
----------首饰特殊处理显示----------------------------------------------------------
---@return cfg_equip_ornaments_column
function this:GetJewelryTblInfoByLevel(cfgId, Level)
local ornament_tbl = SL:GetConfig('cfg_equip_ornamentsMain', cfgId)
local ornamentsTbl = SL:GetConfigTable('cfg_equip_ornaments')
for _, v in pairs(ornamentsTbl) do
if v.ornamentsGroup == ornament_tbl.ornamentsGroup and v.lv == Level then
return v
end
end
return nil
end
-- function this:SetJewelryTips()
-- local jewelryEquip = SL:GetPosItemInfo(self.args.equip_pos, self.args.cfgId, self.args.id)
-- if not jewelryEquip then
-- jewelryEquip = {}
-- jewelryEquip.luaExtData = "null"
-- end
-- ---@type RES_UPDATE_EQUIP_ORNAMENTS
-- local OutEquipData = json.decode(jewelryEquip.luaExtData)
-- local preLevel = 0
-- if OutEquipData == nil or (OutEquipData and not OutEquipData.ssuplv) then
-- preLevel = 0
-- else
-- preLevel = OutEquipData.ssuplv
-- end
-- local PreOrnament_Tbl = self:GetJewelryTblInfoByLevel(self.args.cfgId, preLevel)
-- local NextOrnament_Tbl = self:GetJewelryTblInfoByLevel(self.args.cfgId, preLevel + 1)
-- if PreOrnament_Tbl then
-- local nextLevel = ""
-- ----基础属性标题
-- if not self.IsHaveStrengthen then
-- table.insert(self.all_info, { title = "tips_attribute21" })
-- end
-- ----等级
-- table.insert(self.all_info, { name = "LV." .. preLevel, value = "" })
-- self:JewelSpecialAttr(PreOrnament_Tbl, "#FFFFFF")
-- for _, attrValue in pairs(PreOrnament_Tbl.basicAtt) do
-- if not self:IsJewelSpecialAttr(attrValue[1]) then
-- local preValue = 0
-- local attrName = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).name
-- local att_remark = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).remarks
-- if att_remark == 1 then
-- preValue = attrValue[2]
-- else
-- preValue = tonumber(attrValue[2]) / 100 .. '%'
-- end
-- table.insert(self.all_info, { name = attrName .. ":", value = preValue, color = "#FFFFFF" })
-- end
-- end
-- if NextOrnament_Tbl then
-- nextLevel = preLevel + 1
-- ----下一等级
-- table.insert(self.all_info, { name = "下一级LV." .. nextLevel, value = "" })
-- self:JewelSpecialAttr(NextOrnament_Tbl, "#B0B0B0")
-- for _, attrValue in pairs(NextOrnament_Tbl.basicAtt) do
-- if not self:IsJewelSpecialAttr(attrValue[1]) then
-- local NextValue = 0
-- local attrName = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).name
-- local att_remark = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).remarks
-- if att_remark == 1 then
-- NextValue = attrValue[2]
-- else
-- NextValue = tonumber(attrValue[2]) / 100 .. '%'
-- end
-- table.insert(self.all_info, { name = attrName .. ":", value = NextValue, color = "#B0B0B0" })
-- end
-- end
-- end
-- end
-- ----------卓越属性
-- ----卓越属性标题
-- table.insert(self.all_info, { title = "tips_attribute3" })
-- local ornament_tbl = SL:GetConfig('cfg_equip_ornamentsMain', self.args.cfgId)
-- local ornamentsTbl = SL:GetConfigTable('cfg_equip_ornaments')
-- for _, v in pairs(ornamentsTbl) do
-- if v.ornamentsGroup == ornament_tbl.ornamentsGroup then
-- if next(v.excellenceAtt) then
-- for _, attrValue in pairs(v.excellenceAtt) do
-- local preValue = 0
-- local attrName = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).name
-- local att_remark = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).remarks
-- local desc = ""
-- local descColor = "#FFFFFF"
-- local color = "#B0B0B0"
-- if preLevel < v.lv then
-- desc = v.lv .. "级可激活"
-- descColor = "#ff2323"
-- color = "#B0B0B0"
-- else
-- desc = v.lv .. "级可激活"
-- descColor = "#1ADD1F"
-- color = "#B0B0B0"
-- end
-- if OutEquipData and OutEquipData.ssactlv then
-- for _, data in pairs(OutEquipData.ssactlv) do
-- if tonumber(data) == v.lv then
-- desc = "已激活"
-- descColor = "#4BA7E8"
-- color = "#4BA7E8"
-- end
-- end
-- end
-- if att_remark == 1 then
-- preValue = attrValue[2]
-- else
-- preValue = tonumber(attrValue[2]) / 100 .. '%'
-- end
-- if self:chenckAttrShow(tonumber(attrValue[1])) then
-- local nameStr = nil
-- if not self:chenckAttrValue(tonumber(attrValue[1])) then
-- preValue = ""
-- nameStr = attrName
-- else
-- nameStr = attrName .. " +"
-- end
-- table.insert(self.all_info, { name = nameStr, value = preValue, color = color, desc = desc, descColor = descColor })
-- end
-- end
-- end
-- end
-- end
-- end
function this:SetJewelryTips()
local jichu_list
local jichu_index
for i, v in ipairs(self.all_att_sort_list) do
if v.attr_type == 1 then
jichu_index = i
jichu_list = v.data
break
end
end
if not jichu_list then
jichu_list = {}
end
local jewelryEquip = SL:GetPosItemInfo(self.args.equip_pos, self.args.cfgId, self.args.id)
if not jewelryEquip then
jewelryEquip = {}
jewelryEquip.luaExtData = "null"
end
---@type RES_UPDATE_EQUIP_ORNAMENTS
local OutEquipData = SL:JsonDecode(jewelryEquip.luaExtData,false)
local preLevel = 0
if OutEquipData == nil or (OutEquipData and not OutEquipData.ssuplv) then
preLevel = 0
else
preLevel = OutEquipData.ssuplv
end
local PreOrnament_Tbl = self:GetJewelryTblInfoByLevel(self.args.cfgId, preLevel)
local NextOrnament_Tbl = self:GetJewelryTblInfoByLevel(self.args.cfgId, preLevel + 1)
local shoushi_att = {}
if PreOrnament_Tbl then
local nextLevel = ""
----基础属性标题
if not self.IsHaveStrengthen then
--table.insert(self.all_info, { title = "tips_attribute21" })
end
----等级
--table.insert(self.all_info, { name = "LV." .. preLevel, value = "" })
table.insert(shoushi_att, { name = "LV." .. preLevel, value = "" })
local one_att = self:JewelSpecialAttr(PreOrnament_Tbl, "#FFFFFF")
if one_att then
table.insert(shoushi_att, one_att)
end
for _, attrValue in pairs(PreOrnament_Tbl.basicAtt) do
if not self:IsJewelSpecialAttr(attrValue[1]) then
local preValue = 0
local attrName = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).name
local att_remark = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).remarks
if att_remark == 1 then
preValue = attrValue[2]
else
preValue = tonumber(attrValue[2]) / 100 .. '%'
end
--table.insert(self.all_info, { name = attrName .. ":", value = preValue, color = "#FFFFFF" })
table.insert(shoushi_att, { name = attrName .. ":", value = preValue, color = "#FFFFFF" })
end
end
if NextOrnament_Tbl then
nextLevel = preLevel + 1
----下一等级
--table.insert(self.all_info, { name = "下一级LV." .. nextLevel, value = "" })
table.insert(shoushi_att, { name = "下一级LV." .. nextLevel, value = "" ,color="#999999",color_not_change =true})
local o_att = self:JewelSpecialAttr(NextOrnament_Tbl, "#B0B0B0")
if o_att then
o_att.color="#999999"
o_att.color_not_change =true
table.insert(shoushi_att, o_att)
end
for _, attrValue in pairs(NextOrnament_Tbl.basicAtt) do
if not self:IsJewelSpecialAttr(attrValue[1]) then
local NextValue = 0
local attrName = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).name
local att_remark = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).remarks
if att_remark == 1 then
NextValue = attrValue[2]
else
NextValue = tonumber(attrValue[2]) / 100 .. '%'
end
--table.insert(self.all_info, { name = attrName .. ":", value = NextValue, color = "#B0B0B0" })
table.insert(shoushi_att, { name = attrName .. ":", value = NextValue, color = "#B0B0B0" ,color="#999999",color_not_change =true})
end
end
end
end
if jichu_index then
self.all_att_sort_list[jichu_index].data = jichu_list
else
table.insert(self.all_att_sort_list, { attr_type = 1, data = jichu_list })
end
if shoushi_att and #shoushi_att > 0 then
table.insert(self.all_att_sort_list, { attr_type = 10, data = shoushi_att })
end
----------卓越属性
----卓越属性标题
--table.insert(self.all_info, { title = "tips_attribute3" })
local zhuoyue_list
local zhuoyue_index
for i, v in ipairs(self.all_att_sort_list) do
if v.attr_type == 4 then
zhuoyue_index = i
zhuoyue_list = v.data
break
end
end
if not zhuoyue_list then
zhuoyue_list = {}
end
local ornament_tbl = SL:GetConfig('cfg_equip_ornamentsMain', self.args.cfgId)
local ornamentsTbl = SL:GetConfigTable('cfg_equip_ornaments')
for _, v in pairs(ornamentsTbl) do
if v.ornamentsGroup == ornament_tbl.ornamentsGroup then
if next(v.excellenceAtt) then
for _, attrValue in pairs(v.excellenceAtt) do
local preValue = 0
local attrName = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).name
local att_remark = SL:GetConfig("cfg_att_info", tonumber(attrValue[1])).remarks
local desc = ""
local descColor = "#FFFFFF"
local color = "#B0B0B0"
if preLevel < v.lv then
desc = v.lv .. "级可激活"
descColor = "#ff2323"
color = "#B0B0B0"
else
desc = v.lv .. "级可激活"
descColor = "#1ADD1F"
color = "#B0B0B0"
end
if OutEquipData and OutEquipData.ssactlv then
for _, data in pairs(OutEquipData.ssactlv) do
if tonumber(data) == v.lv then
desc = "已激活"
descColor = "#4BA7E8"
color = "#4BA7E8"
end
end
end
if att_remark == 1 then
preValue = attrValue[2]
else
preValue = tonumber(attrValue[2]) / 100 .. '%'
end
if self:chenckAttrShow(tonumber(attrValue[1])) then
local nameStr = nil
if not self:chenckAttrValue(tonumber(attrValue[1])) then
preValue = ""
nameStr = attrName
else
nameStr = attrName .. " +"
end
--table.insert(self.all_info, { name = nameStr, value = preValue, color = color, desc = desc, descColor = descColor })
table.insert(zhuoyue_list, { name = nameStr, value = preValue, color = color, desc = desc, descColor = descColor })
end
end
end
end
end
if #zhuoyue_list > 0 then
if zhuoyue_index then
self.all_att_sort_list[zhuoyue_index].data = zhuoyue_list
else
table.insert(self.all_att_sort_list, { attr_type = 4, data = zhuoyue_list })
end
end
end
function this:JewelSpecialAttr(PreOrnament_Tbl, _Color)
local max1
local min1
local max2
local min2
local max3
local min3
local max4
local min4
for i, v in ipairs(PreOrnament_Tbl.basicAtt) do
if v[1] == 200021 then
max1 = v
elseif v[1] == 200011 then
min1 = v
elseif v[1] == 202011 then
max2 = v
elseif v[1] == 202021 then
min2 = v
elseif v[1] == 205021 then
max3 = v
elseif v[1] == 205011 then
min3 = v
elseif v[1] == 203021 then
max4 = v
elseif v[1] == 203011 then
min4 = v
end
end
if max1 and min1 then
local _value = min1[2] .. "~" .. max1[2]
return { name = "攻击力", value = _value, color = _Color }
end
if max2 and min2 then
local _value = min2[1] .. "~" .. max2[2]
return { name = "魔法攻击力", value = _value, color = _Color }
end
if max3 and min3 then
local _value = min3[1] .. "~" .. max3[2]
return { name = "诅咒攻击力", value = _value, color = _Color }
end
if max4 and min4 then
local _value = min4[1] .. "~" .. max4[2]
return { name = "天鹰攻击力", value = _value, color = _Color }
end
return
end
function this:IsJewelSpecialAttr(attrId)
if attrId == 200021 or attrId == 200011 or attrId == 202011 or attrId == 202021 or attrId == 205021 or attrId == 205011 or attrId == 203021 or attrId == 203011 then
return true
end
return false
end
----------首饰特殊处理显示end----------------------------------------------------------
----------大天使装备对进度条的特殊处理------------------------------------------
function this:RES_ANGEL_EQUIPMENT_ATTR_INFO(_, message)
if message[tostring(self.args.id)] then
GUI:SetLoadingbar_startper(self.archenge.loadingbar, (message[tostring(self.args.id)].exp / self.archenge.maxExp) * 100)
GUI:Text_setString(self.archenge.valueInfo, tostring(message[tostring(self.args.id)].exp) .. "/" .. tostring(self.archenge.maxExp))
GUI:Text_setString(self.archenge.loading_name, "Lv." .. tostring(message[tostring(self.args.id)].level) .. "")
end
end
----------萤石属性-----------start----------------------------------------------------------------
function this:GetGemAtt()
self.all_gem_att = {}
local rid = SL:GetMetaValue(EMetaVarGetKey.USER_ID)
local target_id = nil
if self.args.info and self.args.info.otherRid then
if tostring(self.args.info.otherRid) ~= rid then
target_id = self.args.info.otherRid
end
end
if not self.args.id then
return
end
--显示的是自己装备的萤石属性
if not target_id then
if self.args.equip_pos ~= "equip" then
return
end
local wearBarId, pos = SL:GetEquipWearBarIdPos(self.args.id)
local gem_data = InfoManager.gemSlateInfo:GetTargetEquipGem(pos)
if gem_data then
for k, gem_id in pairs(gem_data.gems) do
local tab=SL:GetConfig("cfg_equip_gem", gem_id)
for i, att in ipairs(tab.gemAtt) do
local target_index = nil
for j=1,#self.all_gem_att,1 do
if self.all_gem_att[j].type == att[1] then
target_index = j
end
end
if target_index then
local tar_value = self.all_gem_att[target_index].num
tar_value = tar_value + att[2]
self.all_gem_att[target_index].num = tar_value
else
table.insert(self.all_gem_att,{type=att[1],num=att[2]})
end
end
end
end
end
end
----------萤石属性-----------end----------------------------------------------------------------
return this