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

96 lines
2.3 KiB
Lua

local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
DungeonCommonSelectionGroupCell = HL.Class('DungeonCommonSelectionGroupCell', UIWidgetBase)
DungeonCommonSelectionGroupCell.m_dungeonIds = HL.Field(HL.Table)
DungeonCommonSelectionGroupCell.m_clickFunc = HL.Field(HL.Function)
DungeonCommonSelectionGroupCell.m_cellCache = HL.Field(HL.Forward("UIListCache"))
DungeonCommonSelectionGroupCell._OnFirstTimeInit = HL.Override() << function(self)
self.m_cellCache = UIUtils.genCellCache(self.view.subTrainCell)
end
DungeonCommonSelectionGroupCell.InitDungeonCommonSelectionGroupCell = HL.Method(HL.Table, HL.Function)
<< function(self, dungeonIds, clickFunc)
self.m_dungeonIds = dungeonIds
self.m_clickFunc = clickFunc
self:_FirstTimeInit()
self.m_cellCache:Refresh(#self.m_dungeonIds, function(cell, luaIndex)
cell:InitDungeonCommonSelectionGroupSubCell(self.m_dungeonIds[luaIndex], self.m_clickFunc)
cell.gameObject.name = self.m_dungeonIds[luaIndex]
end)
local completeNum = self:_GetCompleteNum()
local maxNum = #dungeonIds
self.view.numTxt.text = string.format(Language.LUA_DUNGEONCOMMONSELECTIONGROUPCELL_NUMBER, completeNum, maxNum)
local rootDungeonId = self.m_dungeonIds[1]
local dungeonCfg = Tables.dungeonTable[rootDungeonId]
self.view.nameTxt.text = dungeonCfg.tabGroupName
self.view.maxNode.gameObject:SetActive(completeNum >= maxNum)
self.view.redDot:InitRedDot("DungeonReadNormal", dungeonIds)
end
DungeonCommonSelectionGroupCell.TryGetSubCell = HL.Method(HL.String).Return(HL.Any) << function(self, dungeonId)
local found = nil
for i, v in ipairs(self.m_dungeonIds) do
if v == dungeonId then
found = self.m_cellCache:Get(i)
break
end
end
return found
end
DungeonCommonSelectionGroupCell._GetCompleteNum = HL.Method().Return(HL.Number) << function(self)
local cnt = 0
for _, dungeonId in ipairs(self.m_dungeonIds) do
local isComplete = DungeonUtils.isDungeonPassed(dungeonId)
if isComplete then
cnt = cnt+1
end
end
return cnt
end
DungeonCommonSelectionGroupCell.SetToggle = HL.Method(HL.Boolean) << function(self, isOn)
self.view.mainTog.isOn = isOn
end
HL.Commit(DungeonCommonSelectionGroupCell)
return DungeonCommonSelectionGroupCell