Files
Endfield-Data/LuaScripts/UI/Widgets/TipGemAttrNode.lua
2025-12-02 20:37:18 +07:00

58 lines
1.7 KiB
Lua

local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
TipGemAttrNode = HL.Class('TipGemAttrNode', UIWidgetBase)
TipGemAttrNode.m_gemAttrCellCache = HL.Field(HL.Forward("UIListCache"))
TipGemAttrNode._OnFirstTimeInit = HL.Override() << function(self)
self.m_gemAttrCellCache = UIUtils.genCellCache(self.view.attrCell)
end
TipGemAttrNode.InitTipGemAttrNode = HL.Method(HL.Number) << function(self, gemInstId)
self:_FirstTimeInit()
local gemInst = CharInfoUtils.getGemByInstId(gemInstId)
local attributeTermList, skillTermList = CharInfoUtils.classifyGemTerm(gemInst)
self.m_gemAttrCellCache:Refresh(#attributeTermList, function(cell, index)
local attributeInfo = attributeTermList[index]
local termEffectCfg = attributeInfo.termEffectCfg
local param = attributeInfo.param
local desc = termEffectCfg.desc
local forceShowPercent = termEffectCfg.calcType == GEnums.GemCalcType.Mul and UIConst.ATTRIBUTE_GENERATE_FORCE_PERCENT.HAS_PERCENT or UIConst.ATTRIBUTE_GENERATE_FORCE_PERCENT.DO_NOT_CARE
local attributeShowInfo = AttributeUtils.generateAttributeShowInfo(termEffectCfg.attrId, param, {
forceShowPercent = forceShowPercent,
attrModifier = termEffectCfg.attrModifier
})
if not attributeShowInfo then
return
end
local formatDesc = FormatUtils.replaceVars(desc, attributeShowInfo)
cell.attrNameText.text = termEffectCfg.name
cell.attrDescText:SetAndResolveTextStyle(formatDesc)
LayoutRebuilder.ForceRebuildLayoutImmediate(cell.attrNameText.transform)
LayoutRebuilder.ForceRebuildLayoutImmediate(cell.attrDescText.transform)
end)
end
HL.Commit(TipGemAttrNode)
return TipGemAttrNode