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

187 lines
5.7 KiB
Lua

---@class XUiPanelActivityAsset
XUiPanelActivityAsset = XClass(nil, "XUiPanelActivityAsset")
function XUiPanelActivityAsset:Ctor(ui, deleteDes, base, hideAssetPanel, hideSkipBtn)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.DeleteDes = deleteDes
self.Base = base
self.HideAssetPanel = hideAssetPanel
self.HideSkipBtn = hideSkipBtn
self:InitAutoScript()
end
-- auto
-- Automatic generation of code, forbid to edit
function XUiPanelActivityAsset:InitAutoScript()
XTool.InitUiObject(self)
self:AutoAddListener()
end
function XUiPanelActivityAsset:AutoAddListener()
self.BtnClick1.CallBack = function()
self:OnBtnClick1Click()
end
self.BtnClick2.CallBack = function()
self:OnBtnClick2Click()
end
self.BtnClick3.CallBack = function()
self:OnBtnClick3Click()
end
end
-- custom 设置自定义按钮事件
function XUiPanelActivityAsset:SetButtonCb(index, cb)
local btn = self["BtnClick"..index]
if not btn then
return
end
btn.CallBack = cb
end
-- auto
function XUiPanelActivityAsset:OnBtnClick1Click()
self:OnBtnClick(1)
end
function XUiPanelActivityAsset:OnBtnClick2Click()
self:OnBtnClick(2)
end
function XUiPanelActivityAsset:OnBtnClick3Click()
self:OnBtnClick(3)
end
function XUiPanelActivityAsset:OnBtnClick(index)
if not self.ItemIds then
return
end
local itemId = self.ItemIds[index]
if not itemId then
return
end
if self:CheckCanBuy(itemId) then
--可购买物品
XUiManager.OpenBuyAssetPanel(itemId)
else
--展示物品详情
local item = XDataCenter.ItemManager.GetItem(itemId)
local data = {
Id = itemId,
Count = item ~= nil and tostring(item.Count) or "0"
}
if self.QueryFunc then
data = XTool.Clone(XGoodsCommonManager.GetGoodsShowParamsByTemplateId(itemId))
data.IsTempItemData = true
data.Count = self.QueryFunc(item) or data.Count
data.Description = XGoodsCommonManager.GetGoodsDescription(itemId)
data.WorldDesc = XGoodsCommonManager.GetGoodsWorldDesc(itemId)
end
if itemId == XDataCenter.ItemManager.ItemId.HongKa then
local count = XDataCenter.ItemManager.GetCount(itemId)
XLuaUiManager.Open("UiTip", itemId, false, "UiPurchase", 0, count, true)
else
XLuaUiManager.Open("UiTip", data, self.HideSkipBtn, self.RootUiName)
end
end
end
--设置可购买物品,点击后跳转到快捷购买界面
function XUiPanelActivityAsset:SetCanBuyItemIdCheckDic(canBuyItemIds)
self.CanBuyItemIdCheckDic = self.CanBuyItemIdCheckDic or {}
for _, itemId in pairs(canBuyItemIds or {}) do
self.CanBuyItemIdCheckDic[itemId] = itemId
end
end
--设置可购买物品,点击后跳转到快捷购买界面
function XUiPanelActivityAsset:CheckCanBuy(itemId)
if XTool.IsTableEmpty(self.CanBuyItemIdCheckDic) then
return false
end
return self.CanBuyItemIdCheckDic[itemId] and true or false
end
function XUiPanelActivityAsset:HidePanel()
if not XTool.UObjIsNil(self.GameObject) then
self.GameObject:SetActiveEx(false)
end
end
function XUiPanelActivityAsset:SetQueryFunc(func)
-- 用于构造本地数据时通过自定义查询器获取
self.QueryFunc = func
end
-- (外部接口)设置显示快速交易按钮的界面名
function XUiPanelActivityAsset:SetRootUiName(name)
self.RootUiName = name
end
function XUiPanelActivityAsset:Refresh(idlist, canBuyItemIds, maxCountDic)
if XTool.UObjIsNil(self.GameObject) then
return
end
if maxCountDic == nil then maxCountDic = {} end
--读取数据
if idlist == nil then
self.GameObject:SetActive(false)
return
end
if not XTool.IsTableEmpty(canBuyItemIds) then
self:SetCanBuyItemIdCheckDic(canBuyItemIds)
end
self.ItemIds = idlist
self.GameObject:SetActive(true)
for i = 1, 3 do
if i > #self.ItemIds then
self["PanelSpecialTool" .. i].gameObject:SetActive(false)
else
self["PanelSpecialTool" .. i].gameObject:SetActive(true)
end
end
if self.HideAssetPanel and self.Base then
self.Base.AssetPanel.GameObject:SetActiveEx(
not (self.PanelSpecialTool3.gameObject.activeSelf or self.PanelSpecialTool2.gameObject.activeSelf or
self.PanelSpecialTool1.gameObject.activeSelf)
)
end
self.PanelSpecialTool.gameObject:SetActiveEx(
self.PanelSpecialTool3.gameObject.activeSelf or self.PanelSpecialTool2.gameObject.activeSelf or
self.PanelSpecialTool1.gameObject.activeSelf
)
local items = {}
for _, id in pairs(self.ItemIds) do
table.insert(items, XDataCenter.ItemManager.GetItem(id))
end
for i = 1, #items do
local item = items[i]
local count = item ~= nil and tostring(item.Count) or "0"
if self.QueryFunc then
count = self.QueryFunc(item) or count
end
self["PanelSpecialTool" .. i].gameObject:SetActive(true)
local content = not self.DeleteDes and CS.XTextManager.GetText("ShopActivityItemCount", count) or count
if maxCountDic[i] then
content = string.format( "%s/%s", content, maxCountDic[i])
end
self["TxtSpecialTool" .. i].text = content
if items[i].Template.ItemType == 2 then
self["TxtSpecialTool" .. i].text = count .. "/" .. XDataCenter.ItemManager.GetMaxActionPoints()
end
local rImgSpecialTool = self["RImgSpecialTool" .. i]
if rImgSpecialTool and rImgSpecialTool:Exist() then
rImgSpecialTool:SetRawImage(items[i].Template.Icon)
end
end
end