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

68 lines
1.7 KiB
Lua

local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
LevelBreakNode = HL.Class('LevelBreakNode', UIWidgetBase)
LevelBreakNode.m_breakCellCache = HL.Field(HL.Forward("UIListCache"))
LevelBreakNode._OnFirstTimeInit = HL.Override() << function(self)
self.m_breakCellCache = UIUtils.genCellCache(self.view.breakCell)
end
LevelBreakNode.InitLevelBreakNodeSimple = HL.Method(HL.Number, HL.Number, HL.Opt(HL.Boolean)) << function(self, curBreakStage, maxBreakStage, showNextStage)
self:_FirstTimeInit()
self.m_breakCellCache:Refresh(maxBreakStage, function(cell, index)
local hadBreak = curBreakStage >= index
cell.normal.gameObject:SetActive(not hadBreak)
cell.done.gameObject:SetActive(hadBreak)
cell.breaking.gameObject:SetActive(showNextStage and curBreakStage + 1 == index)
end)
end
LevelBreakNode.InitLevelBreakNode = HL.Method(HL.Number, HL.Opt(HL.Boolean, HL.Table)) << function(self, curBreakStage, showNextBreakStage, customBreakInfoList)
self:_FirstTimeInit()
local breakInfoList = customBreakInfoList or CharInfoUtils.getPlayerBreakInfoList()
self.m_breakCellCache:Refresh(#breakInfoList, function(cell, index)
local breakInfo = breakInfoList[index]
local isHide = breakInfo.isHide
if isHide then
cell.gameObject:SetActive(false)
return
end
local hadBreak = curBreakStage >= index
cell.normal.gameObject:SetActive(not hadBreak)
cell.done.gameObject:SetActive(hadBreak)
cell.breaking.gameObject:SetActive(showNextBreakStage and (curBreakStage + 1 == index))
end)
end
HL.Commit(LevelBreakNode)
return LevelBreakNode