94 lines
2.2 KiB
Lua
94 lines
2.2 KiB
Lua
local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CharTalentNode = HL.Class('CharTalentNode', UIWidgetBase)
|
|
|
|
|
|
CharTalentNode.m_talentCellCache = HL.Field(HL.Forward("UIListCache"))
|
|
|
|
|
|
|
|
|
|
CharTalentNode._OnFirstTimeInit = HL.Override() << function(self)
|
|
self.m_talentCellCache = UIUtils.genCellCache(self.view.talentCell)
|
|
end
|
|
|
|
|
|
|
|
|
|
CharTalentNode.InitCharTalentNodeByInstId = HL.Method(HL.Number) << function(self, charInstId)
|
|
self:_FirstTimeInit()
|
|
|
|
local charInfo = CharInfoUtils.getPlayerCharInfoByInstId(charInstId)
|
|
self:InitCharTalentNodeByTemplateId(charInfo.templateId, charInfo.breakStage)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
CharTalentNode.InitCharTalentNodeByTemplateId = HL.Method(HL.String, HL.Number) << function(self, templateId, breakStage)
|
|
self:_FirstTimeInit()
|
|
|
|
local talents = CharInfoUtils.getCharTalentInTable(templateId, breakStage)
|
|
|
|
self.m_talentCellCache:Refresh(UIConst.CHAR_MAX_TALENT_NUM, function(cell, index)
|
|
local talentInfo = talents[index]
|
|
|
|
if talentInfo == nil then
|
|
cell.talentName.text = Language.LUA_LOCKED_TIP
|
|
else
|
|
cell.talentName.text = talentInfo.talentName
|
|
end
|
|
|
|
cell.lockedIcon.gameObject:SetActive(talentInfo == nil)
|
|
cell.button.interactable = talentInfo ~= nil
|
|
cell.button.onClick:RemoveAllListeners()
|
|
cell.button.onClick:AddListener(function()
|
|
self:_OnTalentClicked(index, cell, talentInfo)
|
|
end)
|
|
end)
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CharTalentNode._OnTalentClicked = HL.Method(HL.Number, HL.Table, HL.Table) << function(self, index, cell, talentInfo)
|
|
local arg = {
|
|
skillId = talentInfo.skillId,
|
|
transform = cell.transform,
|
|
unlock = false,
|
|
onClose = function()
|
|
self:RefreshTalentSelect(-1)
|
|
end
|
|
}
|
|
self:RefreshTalentSelect(index)
|
|
|
|
Notify(MessageConst.SHOW_CHAR_SKILL_TIP, arg)
|
|
end
|
|
|
|
|
|
|
|
|
|
CharTalentNode.RefreshTalentSelect = HL.Method(HL.Opt(HL.Number)) << function(self, selectIndex)
|
|
local count = self.m_talentCellCache:GetCount()
|
|
for i = 1, count do
|
|
local cell = self.m_talentCellCache:GetItem(i)
|
|
cell.imageSelect.gameObject:SetActive(selectIndex == i)
|
|
end
|
|
end
|
|
|
|
|
|
HL.Commit(CharTalentNode)
|
|
return CharTalentNode
|
|
|