PGRData/Script/matrix/xui/xuidraw/XUiDrawPreview.lua

137 lines
4.2 KiB
Lua

local XUiDrawPreview = XLuaUiManager.Register(XLuaUi, "UiDrawPreview")
function XUiDrawPreview:OnAwake()
self:InitAutoScript()
end
function XUiDrawPreview:OnStart(drawId, closeCb, father)
self.PanelProCard.gameObject:SetActive(false)
self.PanelStdCard.gameObject:SetActive(false)
self.DrawId = drawId
self.CloseCb = closeCb
self.Father = father
self.ProCards = {}
self.StdCards = {}
end
function XUiDrawPreview:OnEnable()
self:Init(self.Father.DrawInfo.Id)
end
function XUiDrawPreview:Init(id)
self.DrawId = id
local previewList = XDataCenter.DrawManager.GetDrawPreview(self.DrawId)
if not previewList then
return
end
local upGoods = previewList.UpGoods
if #upGoods > 0 then
self.ProTitle.gameObject:SetActive(true)
else
self.ProTitle.gameObject:SetActive(false)
end
for i = 1, #upGoods do
if not self.ProCards[i] then
local go = CS.UnityEngine.Object.Instantiate(self.PanelProCard, self.PanelPro)
local item = XUiGridCommon.New(self, go)
item:Refresh(upGoods[i])
table.insert(self.ProCards, item)
else
self.ProCards[i]:Refresh(upGoods[i])
end
self.ProCards[i].GameObject:SetActive(true)
end
for i = #upGoods + 1, #self.ProCards do
self.ProCards[i].GameObject:SetActive(false)
end
local goods = previewList.Goods
for i = 1, #goods do
if not self.StdCards[i] then
local go = CS.UnityEngine.Object.Instantiate(self.PanelStdCard, self.PanelStd)
local item = XUiGridCommon.New(self, go)
item:Refresh(goods[i])
table.insert(self.StdCards, item)
else
self.StdCards[i]:Refresh(goods[i])
end
self.StdCards[i].GameObject:SetActive(true)
end
for i = #goods + 1, #self.StdCards do
self.StdCards[i].GameObject:SetActive(false)
end
end
function XUiDrawPreview:SetActive(bool)
self.GameObject:SetActive(bool)
end
-- auto
-- Automatic generation of code, forbid to edit
function XUiDrawPreview:InitAutoScript()
self:AutoInitUi()
self.SpecialSoundMap = {}
self:AutoAddListener()
end
function XUiDrawPreview:AutoInitUi()
-- self.PanelPreview = self.Transform:Find("SafeAreaContentPane/PanelPreview")
-- self.PanelPro = self.Transform:Find("SafeAreaContentPane/PanelPreview/PnlScrollView/PnlViewport/PnlDetailContent/PanelPro")
-- self.PanelProCard = self.Transform:Find("SafeAreaContentPane/PanelPreview/PnlScrollView/PnlViewport/PnlDetailContent/PanelPro/PanelProCard")
-- self.PanelStd = self.Transform:Find("SafeAreaContentPane/PanelPreview/PnlScrollView/PnlViewport/PnlDetailContent/PanelStd")
-- self.PanelStdCard = self.Transform:Find("SafeAreaContentPane/PanelPreview/PnlScrollView/PnlViewport/PnlDetailContent/PanelStd/PanelStdCard")
-- self.BtnClose = self.Transform:Find("SafeAreaContentPane/BtnClose"):GetComponent("Button")
-- self.ProTitle = self.Transform:Find("SafeAreaContentPane/PanelPreview/PnlScrollView/PnlViewport/PnlDetailContent/ProTitle")
end
function XUiDrawPreview:GetAutoKey(uiNode, eventName)
if not uiNode then
return
end
return eventName .. uiNode:GetHashCode()
end
function XUiDrawPreview:RegisterListener(uiNode, eventName, func)
local key = self:GetAutoKey(uiNode, eventName)
if not key then
return
end
local listener = self.AutoCreateListeners[key]
if listener ~= nil then
uiNode[eventName]:RemoveListener(listener)
end
if func ~= nil then
if type(func) ~= "function" then
XLog.Error("XUiDrawPreview:RegisterListener函数错误, 参数func需要是function类型, func的类型是" .. type(func))
end
listener = function(...)
XSoundManager.PlayBtnMusic(self.SpecialSoundMap[key], eventName)
func(self, ...)
end
uiNode[eventName]:AddListener(listener)
self.AutoCreateListeners[key] = listener
end
end
function XUiDrawPreview:AutoAddListener()
self.AutoCreateListeners = {}
self:RegisterClickEvent(self.BtnClose, self.OnBtnCloseClick)
end
-- auto
function XUiDrawPreview:OnBtnCloseClick()
--[[ if self.Closed then
return
end
self.Closed = true
--]]
end