PGRData/Script/matrix/xui/uiloading/XUiLoadingOption.lua
2024-09-01 22:49:41 +02:00

154 lines
No EOL
5.3 KiB
Lua

local XUiLoadingOption = XLuaUiManager.Register(XLuaUi, "UiLoadingOption")
local XUiLoadingSelection = require("XUi/UiLoading/ChildView/XUiLoadingSelection")
local XUiGridCG = require("XUi/UiLoading/ChildItem/XUiGridCG")
function XUiLoadingOption:OnStart()
self.SelectionDic = {}
self.SelectCount = 0
self.LoadingList = XDataCenter.LoadingManager.GetCustomLoadingList()
for i, v in ipairs(self.LoadingList) do
self.SelectCount = self.SelectCount + 1
self.SelectionDic[v] = i
end
self.StepCount = #self.LoadingList + 1
self.MaxSize = XLoadingConfig.GetCustomMaxSize()
self:InitUi()
end
function XUiLoadingOption:OnEnable()
end
function XUiLoadingOption:InitUi()
self.DynamicTable = XDynamicTableNormal.New(self.PanelDynamicTable)
self.DynamicTable:SetProxy(XUiGridCG)
self.DynamicTable:SetDelegate(self)
self.GridCGItem.gameObject:SetActiveEx(false)
self:InitTypeButton()
self.SelectionView = XUiLoadingSelection.New(self, self.PanelSelectedList)
self.SelectionView:Refresh(self.SelectionDic)
self:ShowSelectInfo()
self.BtnBack.CallBack = handler(self, self.OnBtnBackClick)
self.BtnMainUi.CallBack = handler(self, self.OnBtnMainUiClick)
self.BtnConfirm.CallBack = handler(self, self.OnBtnConfirmClick)
end
function XUiLoadingOption:SetupDynamicTable(type)
self.EntityList = XDataCenter.ArchiveManager.GetArchiveCGDetailList(type)
self.DynamicTable:SetDataSource(self.EntityList)
self.DynamicTable:ReloadDataASync(1)
end
function XUiLoadingOption:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
grid:Init(self)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
grid:UpdateCg(self.EntityList[index])
local id = self.EntityList[index].Id
grid:SetSelect(self.SelectionDic[id])
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
if not grid:CheckSelectable() then return end
self:OnGridClick(self.EntityList[index].Id, grid)
end
end
function XUiLoadingOption:OnGridClick(id, grid)
local updateState = function()
self.ChangedFlag = true
if grid then
grid:SetSelect(self.SelectionDic[id])
else
self.DynamicTable:ReloadDataSync()
end
self:ShowSelectInfo()
self.SelectionView:Refresh(self.SelectionDic)
end
if self.SelectionDic[id] then
XUiManager.DialogTip(CS.XTextManager.GetText("TipTitle"), CS.XTextManager.GetText("CustomLoadingRemoveTip"),
XUiManager.DialogType.Normal, nil, function()
self.SelectionDic[id] = nil
self.SelectCount = self.SelectCount - 1
updateState()
end)
elseif self.SelectCount >= self.MaxSize then
XUiManager.TipText("CustomLoadingMaxTip")
else
self.SelectionDic[id] = self.StepCount
self.SelectCount = self.SelectCount + 1
self.StepCount = self.StepCount + 1
updateState()
end
end
function XUiLoadingOption:InitTypeButton()
self.GroupList = XDataCenter.ArchiveManager.GetArchiveCGGroupList(true)
self.CurType = 1
self.CGGroupBtn = {}
for _, v in pairs(self.GroupList) do
local btn = CS.UnityEngine.Object.Instantiate(self.BtnTabShortNew)
btn.gameObject:SetActive(true)
btn.transform:SetParent(self.TabBtnContent.transform, false)
local btncs = btn:GetComponent("XUiButton")
local name = v.Name
btncs:SetName(name or "")
table.insert(self.CGGroupBtn, btncs)
end
self.TabBtnContent:Init(self.CGGroupBtn, function(index) self:SelectType(index) end)
self.BtnTabShortNew.gameObject:SetActiveEx(false)
self.TabBtnContent:SelectIndex(self.CurType)
end
function XUiLoadingOption:SelectType(index)
self.CurType = index
self:SetupDynamicTable(self.GroupList[index].Id)
self:PlayAnimation("QieHuan")
end
function XUiLoadingOption:OnBtnBackClick()
if self.ChangedFlag then
XUiManager.DialogTip(CS.XTextManager.GetText("TipTitle"), CS.XTextManager.GetText("SettingCheckSave"),
XUiManager.DialogType.Normal, handler(self, self.Close), handler(self, self.OnBtnConfirmClick))
else
self:Close()
end
end
function XUiLoadingOption:OnBtnMainUiClick()
if self.ChangedFlag then
XUiManager.DialogTip(CS.XTextManager.GetText("TipTitle"), CS.XTextManager.GetText("SettingCheckSave"),
XUiManager.DialogType.Normal, XLuaUiManager.RunMain, handler(self, self.OnBtnConfirmClick))
else
XLuaUiManager.RunMain()
end
end
function XUiLoadingOption:OnBtnConfirmClick()
if self.ChangedFlag then
local list = {}
for i in pairs(self.SelectionDic) do
table.insert(list, i)
end
table.sort(list, function(a, b)
return self.SelectionDic[a] < self.SelectionDic[b]
end)
XDataCenter.LoadingManager.SaveCustomLoading(list)
self.ChangedFlag = false
end
-- 打开自定义加载开关
XDataCenter.LoadingManager.SetCustomLoadingState(XSetConfigs.LoadingType.Custom)
XUiManager.TipText("SetAppearanceSuccess")
end
function XUiLoadingOption:ShowSelectInfo()
self.SelectNum.text = string.format("%d/%d", self.SelectCount, self.MaxSize)
end