Files
StellaSora_DataLua/lua/game/ui/successbarex/discbreaklimitallsucctrl.lua
SL1900 5e0d58cfad Initial version - 1.2.0.60
EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
2025-12-03 01:00:00 +09:00

88 lines
3.0 KiB
Lua

local DiscBreakLimitAllSucCtrl = class("DiscBreakLimitAllSucCtrl", BaseCtrl)
DiscBreakLimitAllSucCtrl._mapNodeConfig = {
txtTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Disc_BreakLimitAll_ConsumedMaterials"
},
btnGrid = {},
goItemList1 = {sComponentName = "Transform"},
goItemList2 = {},
sv = {
sComponentName = "LoopScrollView"
},
rtTitle = {sComponentName = "Transform"},
rtItem = {sComponentName = "Transform"}
}
DiscBreakLimitAllSucCtrl._mapEventConfig = {}
function DiscBreakLimitAllSucCtrl:Open(nType)
self:RefreshContent()
local SuccessBar = self:BindCtrlByNode(self.gameObject, "Game.UI.SuccessBarEx.SuccessBarCtrl")
SuccessBar:PlayAni(nType, self.tbAni)
end
function DiscBreakLimitAllSucCtrl:RefreshContent()
local ani1 = self._mapNode.rtTitle:GetComponent("Animator")
local ani2 = self._mapNode.rtItem:GetComponent("Animator")
self.tbAni = {}
table.insert(self.tbAni, ani1)
table.insert(self.tbAni, ani2)
self.tbMat = self._panel.mapData.tbMat
self.nAllCount = #self.tbMat
if self.nAllCount <= 8 then
self._mapNode.goItemList1.gameObject:SetActive(true)
self._mapNode.goItemList2:SetActive(false)
self:RefreshNormal()
else
self._mapNode.goItemList1.gameObject:SetActive(false)
self._mapNode.goItemList2:SetActive(true)
self:RefreshSV()
end
end
function DiscBreakLimitAllSucCtrl:RefreshNormal()
for _, v in ipairs(self.tbMat) do
local nItemId = v.nTid
local goItem = instantiate(self._mapNode.btnGrid, self._mapNode.goItemList1)
local ctrlObj = self:BindCtrlByNode(goItem, "Game.UI.TemplateEx.TemplateItemCtrl")
ctrlObj:SetItem(nItemId, nil, v.nCount)
local btnGrid = goItem:GetComponent("UIButton")
btnGrid.onClick:RemoveAllListeners()
local cbSelect = function()
self:OnSelectItem(nItemId, btnGrid)
end
btnGrid.onClick:AddListener(cbSelect)
end
end
function DiscBreakLimitAllSucCtrl:RefreshSV()
self._mapNode.sv:Init(self.nAllCount, self, self.OnGridRefresh, self.OnGridBtnClick)
end
function DiscBreakLimitAllSucCtrl:OnGridRefresh(goGrid, gridIndex)
local nIndex = gridIndex + 1
local mapItem = self.tbMat[nIndex]
local nInstanceId = goGrid:GetInstanceID()
if not self.tbGridCtrl[nInstanceId] then
self.tbGridCtrl[nInstanceId] = self:BindCtrlByNode(goGrid.transform:Find("btnGrid").gameObject, "Game.UI.TemplateEx.TemplateItemCtrl")
end
self.tbGridCtrl[nInstanceId]:SetItem(mapItem.nTid, nil, mapItem.nCount)
end
function DiscBreakLimitAllSucCtrl:OnGridBtnClick(goGrid, gridIndex)
local nIndex = gridIndex + 1
self:OnSelectItem(self.tbMat[nIndex].nTid, goGrid.transform:Find("btnGrid"))
end
function DiscBreakLimitAllSucCtrl:OnSelectItem(itemId, btn)
UTILS.ClickItemGridWithTips(itemId, btn.transform, true, true, false)
end
function DiscBreakLimitAllSucCtrl:Awake()
self.tbGridCtrl = {}
end
function DiscBreakLimitAllSucCtrl:OnEnable()
end
function DiscBreakLimitAllSucCtrl:OnDisable()
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
self:UnbindCtrlByNode(objCtrl)
self.tbGridCtrl[nInstanceId] = nil
end
self.tbGridCtrl = {}
end
function DiscBreakLimitAllSucCtrl:OnDestroy()
end
return DiscBreakLimitAllSucCtrl