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

108 lines
2.6 KiB
Lua

local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
CharInfoSkillCell = HL.Class('CharInfoSkillCell', UIWidgetBase)
CharInfoSkillCell._OnFirstTimeInit = HL.Override() << function(self)
end
CharInfoSkillCell.skills = HL.Field(HL.Table)
CharInfoSkillCell.m_charInfo = HL.Field(HL.Table)
CharInfoSkillCell.onClickCallback = HL.Field(HL.Function)
CharInfoSkillCell.InitCharInfoSkillCell = HL.Method(HL.Table, HL.Opt(HL.Function)) << function(self, info, callback)
self:_FirstTimeInit()
self.skills = info
self.view.single.buttonSkill.view.button.onClick:RemoveAllListeners()
self.view.plural.buttonSkill1.view.button.onClick:RemoveAllListeners()
self.view.plural.buttonSkill2.view.button.onClick:RemoveAllListeners()
self.onClickCallback = callback
self:_Refresh()
end
CharInfoSkillCell._OnClick = HL.Method() << function(self)
if self.onClickCallback then
self.onClickCallback(self.skills)
end
end
CharInfoSkillCell._Refresh = HL.Method() << function(self)
local single = #self.skills == 1
self.view.single.gameObject:SetActive(not not single)
self.view.plural.gameObject:SetActive(not single)
if single then
self.view.single.buttonSkill:InitCharInfoSkillButton(self.skills[1], function()
self:_OnClick()
end)
self.view.single.buttonSkillShadow:InitCharInfoSkillButton(self.skills[1], function()
self:_OnClick()
end)
self.view.single.buttonSkill:RefreshRedDot(self.m_charInfo)
else
for i = 1, #self.skills do
local buttonSkillShadow = self.view.plural[string.format("buttonSkillShadow%d", i)]
local buttonSkill = self.view.plural[string.format("buttonSkill%d", i)]
buttonSkillShadow:InitCharInfoSkillButton(self.skills[i], function()
self:_OnClick()
end)
buttonSkill:InitCharInfoSkillButton(self.skills[i], function()
self:_OnClick()
end)
buttonSkill:RefreshRedDot(self.m_charInfo)
end
end
end
CharInfoSkillCell.InitSkill = HL.Method(HL.Table) << function(self, data)
self.skills = data.skills
self.m_charInfo = data.charInfo
self:_Refresh()
end
CharInfoSkillCell.SetSelect = HL.Method(HL.Boolean) << function(self, select)
local single = #self.skills == 1
if single then
self.view.single.buttonSkill.view.imageSelect2.gameObject:SetActive(select)
else
self.view.plural.select.gameObject:SetActive(select)
end
end
HL.Commit(CharInfoSkillCell)
return CharInfoSkillCell