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

87 lines
2.3 KiB
Lua

local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
GemCard = HL.Class('GemCard', UIWidgetBase)
GemCard.m_starCellCache = HL.Field(HL.Forward("UIListCache"))
GemCard.m_gemInst = HL.Field(HL.Number) << -1
GemCard.m_refreshSkillNode = HL.Field(HL.Function)
GemCard._OnFirstTimeInit = HL.Override() << function(self)
self.m_starCellCache = UIUtils.genCellCache(self.view.starCell)
self.view.naviGroup.onIsTopLayerChanged:AddListener(function(isTopLayer)
self.view.controllerFocusHintNode.gameObject:SetActive(not isTopLayer)
end)
self:RegisterMessage(MessageConst.ON_GEM_ENHANCE, function(args)
local msg = unpack(args)
if msg.IsSuccess and msg.GemInstId == self.m_gemInst then
self.m_refreshSkillNode()
end
end)
end
GemCard.InitGemCard = HL.Method(HL.Number, HL.Opt(HL.Number)) << function(self, gemInstId, tryWeaponInstId)
self:_FirstTimeInit()
if not gemInstId or gemInstId <= 0 then
return
end
self.m_gemInst = gemInstId
self:_RefreshBasicInfo(gemInstId)
self.m_refreshSkillNode = function()
self.view.gemSkillNode:InitGemSkillNode(gemInstId, { weaponInstId = tryWeaponInstId })
end
self.m_refreshSkillNode()
end
GemCard._RefreshBasicInfo = HL.Method(HL.Number) << function(self, gemInstId)
local gemInst = CharInfoUtils.getGemByInstId(gemInstId)
local gemItemCfg = Tables.itemTable:GetValue(gemInst.templateId)
self.view.gemName.text = UIUtils.getItemName(gemInst.templateId, gemInst.instId)
self.view.gemItemIcon:InitItemIcon(gemInst.templateId, true, gemInst.instId)
self.view.lockToggle:InitLockToggle(gemInst.templateId, gemInst.instId)
self.view.trashToggle:InitTrashToggle(gemInst.templateId, gemInst.instId)
local _, domainData = Tables.domainDataTable:TryGetValue(gemInst.domainId)
self.view.domainNode.gameObject:SetActive(domainData ~= nil)
if domainData then
self.view.txtDomain.text = domainData.domainName
end
UIUtils.setItemRarityImage(self.view.bgColor, gemItemCfg.rarity)
UIUtils.setItemRarityImage(self.view.titleColor, gemItemCfg.rarity)
self.m_starCellCache:Refresh(gemItemCfg.rarity)
end
GemCard.ActiveToggleGroup = HL.Method(HL.Boolean) << function(self, isActive)
self.view.naviGroup.gameObject:SetActive(isActive)
end
HL.Commit(GemCard)
return GemCard