175 lines
5.7 KiB
Lua
175 lines
5.7 KiB
Lua
|
local XUiCollectionWallSetting = XLuaUiManager.Register(XLuaUi, "UiCollectionWallSetting")
|
|||
|
|
|||
|
local XUiGridCollectionWall = require("XUi/XUiCollectionWall/XUiCollectionWallGrid/XUiGridCollectionWall")
|
|||
|
|
|||
|
function XUiCollectionWallSetting:OnStart()
|
|||
|
-- 新旧设置缓存,用来检查是否作出了更改
|
|||
|
self.OldShowSetting = {}
|
|||
|
self.CurShowSetting = {}
|
|||
|
|
|||
|
self:InitComponent()
|
|||
|
self:AddListener()
|
|||
|
self:SetupDynamicTable()
|
|||
|
end
|
|||
|
|
|||
|
function XUiCollectionWallSetting:InitComponent()
|
|||
|
self.AssetPanel = XUiPanelAsset.New(
|
|||
|
self,
|
|||
|
self.PanelAsset,
|
|||
|
XDataCenter.ItemManager.ItemId.FreeGem,
|
|||
|
XDataCenter.ItemManager.ItemId.ActionPoint,
|
|||
|
XDataCenter.ItemManager.ItemId.Coin
|
|||
|
)
|
|||
|
|
|||
|
self.PanelNoneTemplate.gameObject:SetActiveEx(false)
|
|||
|
self.GridCollectionWall.gameObject:SetActiveEx(false)
|
|||
|
self:InitDynamicTable()
|
|||
|
end
|
|||
|
|
|||
|
function XUiCollectionWallSetting:InitDynamicTable()
|
|||
|
self.DynamicTable = XDynamicTableNormal.New(self.PanelDynamicTable)
|
|||
|
self.DynamicTable:SetProxy(XUiGridCollectionWall, self, XCollectionWallConfigs.EnumWallGridOpenType.Setting)
|
|||
|
self.DynamicTable:SetDelegate(self)
|
|||
|
end
|
|||
|
|
|||
|
function XUiCollectionWallSetting:SetupDynamicTable()
|
|||
|
self.PageDatas = XDataCenter.CollectionWallManager.GetNormalWallEntityList()
|
|||
|
--self.PageDatas = XDataCenter.CollectionWallManager.GetWallEntityList()
|
|||
|
|
|||
|
for _, wallData in ipairs(self.PageDatas) do
|
|||
|
self.OldShowSetting[wallData:GetId()] = wallData:GetIsShow()
|
|||
|
self.CurShowSetting[wallData:GetId()] = wallData:GetIsShow()
|
|||
|
end
|
|||
|
|
|||
|
self.PanelNoneTemplate.gameObject:SetActiveEx(#self.PageDatas <= 0)
|
|||
|
self.DynamicTable:SetDataSource(self.PageDatas)
|
|||
|
self.DynamicTable:ReloadDataSync(#self.PageDatas)
|
|||
|
end
|
|||
|
|
|||
|
function XUiCollectionWallSetting:OnDynamicTableEvent(event, index, grid)
|
|||
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|||
|
grid:UpdateGrid(self.PageDatas[index])
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 更改'wallDataId'的墙的展示设置缓存为'isShow'
|
|||
|
---@param wallDataId number
|
|||
|
---@param isShow boolean
|
|||
|
function XUiCollectionWallSetting:ChangeCurShowSetting(wallDataId, isShow)
|
|||
|
self.CurShowSetting[wallDataId] = isShow
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 检查是否有更改需要保存
|
|||
|
function XUiCollectionWallSetting:CheckSave()
|
|||
|
local needSave = false
|
|||
|
|
|||
|
for wallDataId, isShow in pairs(self.OldShowSetting) do
|
|||
|
if self.CurShowSetting[wallDataId] ~= isShow then
|
|||
|
needSave = true
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return needSave
|
|||
|
end
|
|||
|
|
|||
|
function XUiCollectionWallSetting:AddListener()
|
|||
|
self.BtnBack.CallBack = function()
|
|||
|
self:OnBtnBackClick()
|
|||
|
end
|
|||
|
self.BtnMainUi.CallBack = function()
|
|||
|
self:OnBtnMainUiClick()
|
|||
|
end
|
|||
|
self:BindHelpBtn(self.BtnHelp, "CollectionWall")
|
|||
|
self.BtnSave.CallBack = function()
|
|||
|
self:OnBtnSaveClick()
|
|||
|
end
|
|||
|
self.BtnPreview.CallBack = function()
|
|||
|
self:OnBtnPreviewClick()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 保存收藏品墙展示设置
|
|||
|
--- 在发送协议后更新收藏品墙数据实体(XCollectionWall)IsShow属性
|
|||
|
--- 然后在回调中更新设置缓存
|
|||
|
function XUiCollectionWallSetting:OnBtnSaveClick()
|
|||
|
if #self.PageDatas <= 0 then
|
|||
|
-- 没有对外展示的墙
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("CollectionWallNoneShow"))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
-- 构造发送请求需要的数据
|
|||
|
local showInfoList = {}
|
|||
|
for id, isShow in pairs(self.CurShowSetting) do
|
|||
|
local showInfo = {}
|
|||
|
showInfo.Id = id
|
|||
|
showInfo.IsShow = isShow
|
|||
|
table.insert(showInfoList, showInfo)
|
|||
|
end
|
|||
|
|
|||
|
XDataCenter.CollectionWallManager.RequestEditCollectionWallIsShow(showInfoList, function()
|
|||
|
-- 保存后更新新旧设置缓存
|
|||
|
for _, wallData in ipairs(self.PageDatas) do
|
|||
|
self.OldShowSetting[wallData:GetId()] = wallData:GetIsShow()
|
|||
|
self.CurShowSetting[wallData:GetId()] = wallData:GetIsShow()
|
|||
|
end
|
|||
|
XUiManager.TipText("SetAppearanceSuccess")
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 打开收藏品墙的展示界面,showWallList为需要展示的收藏品墙的数据实体数组
|
|||
|
function XUiCollectionWallSetting:OnBtnPreviewClick()
|
|||
|
local showWallList = {}
|
|||
|
|
|||
|
for id, isShow in pairs(self.CurShowSetting) do
|
|||
|
if isShow then
|
|||
|
table.insert(showWallList, XDataCenter.CollectionWallManager.GetWallEntityData(id))
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if next(showWallList) == nil then
|
|||
|
-- 没有对外展示的墙
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("CollectionWallNoneShow"))
|
|||
|
else
|
|||
|
XLuaUiManager.Open("UiCollectionWallView", showWallList, XDataCenter.MedalManager.InType.Normal)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiCollectionWallSetting:OnBtnBackClick()
|
|||
|
if self:CheckSave() then
|
|||
|
XUiManager.DialogTip(CS.XTextManager.GetText("TipTitle"), CS.XTextManager.GetText("SaveShowSetting"),
|
|||
|
XUiManager.DialogType.Normal,
|
|||
|
function()
|
|||
|
self:Close()
|
|||
|
end,
|
|||
|
function()
|
|||
|
self:OnBtnSaveClick()
|
|||
|
self:Close()
|
|||
|
end)
|
|||
|
return
|
|||
|
end
|
|||
|
self:Close()
|
|||
|
end
|
|||
|
|
|||
|
function XUiCollectionWallSetting:OnBtnMainUiClick()
|
|||
|
if self:CheckSave() then
|
|||
|
XUiManager.DialogTip(CS.XTextManager.GetText("TipTitle"), CS.XTextManager.GetText("SaveShowSetting"),
|
|||
|
XUiManager.DialogType.Normal,
|
|||
|
function()
|
|||
|
XLuaUiManager.RunMain()
|
|||
|
end,
|
|||
|
function()
|
|||
|
self:OnBtnSaveClick()
|
|||
|
XLuaUiManager.RunMain()
|
|||
|
XDataCenter.CollectionWallManager.ClearLocalCaptureCache()
|
|||
|
end)
|
|||
|
return
|
|||
|
end
|
|||
|
XLuaUiManager.RunMain()
|
|||
|
XDataCenter.CollectionWallManager.ClearLocalCaptureCache()
|
|||
|
end
|