PGRData/Script/matrix/xui/xuicommon/XUiCommonAsset.lua

88 lines
No EOL
2.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 通用道具显示按钮控件
local XUiCommonAsset = XClass(nil, "XUiCommonAsset")
XUiCommonAsset.ShowType = {
BagItem = 1, -- 填入Item表的道具
BagPoint = 2, -- 填入Item表的数值道具(如体力),显示格式为 "当前值/最大值"
RecoverPoint = 3, -- 不填入Item表的数值道具(如体力),显示格式为 "当前值/最大值"
UniqueItem = 4, -- 不填入Item表的道具各个功能使用自己专有的道具时可使用
}
local TypeName = {
[1] = "BagItem",
[2] = "BagPoint",
[3] = "RecoverPoint",
[4] = "UniqueItem"
}
function XUiCommonAsset:Ctor(ui, assetData)
XTool.InitUiObjectByUi(self, ui)
self:SetData(assetData)
end
function XUiCommonAsset:SetData(assetData)
if not assetData then
self.GameObject:SetActiveEx(false)
return
end
self.AssetData = assetData
self.GameObject:SetActiveEx(true)
local typeName = TypeName[self.AssetData.ShowType]
if typeName and self["Set" .. typeName .. "Data"] then
self["Set" .. typeName .. "Data"](self)
end
end
function XUiCommonAsset:SetBagItemData()
local item = XDataCenter.ItemManager.GetItem(self.AssetData.ItemId)
self.ImgIcon:SetRawImage(item.Template.Icon)
self:RefreshTextByItemCount(XDataCenter.ItemManager.GetCount(self.AssetData.ItemId))
XDataCenter.ItemManager.AddCountUpdateListener(
self.AssetData.ItemId,
function()
self:RefreshTextByItemCount(XDataCenter.ItemManager.GetCount(self.AssetData.ItemId))
end,
self
)
self.BtnDetail.gameObject:SetActiveEx(true)
self.BtnDetail.CallBack = function() self:OnBtnDetailClickByBagItem() end
end
function XUiCommonAsset:SetRecoverPointData()
if self.AssetData.Icon then
self.ImgIcon:SetRawImage(self.AssetData.Icon)
self.ImgIcon.gameObject:SetActiveEx(true)
else
self.ImgIcon.gameObject:SetActiveEx(false)
end
self:RefreshTextByPoint(self.AssetData.GetCountFunc(), self.AssetData.GetMaxCountFunc())
XEventManager.BindEvent(self.GameObject, self.AssetData.ChangeEventId,
function()
self:RefreshTextByPoint(self.AssetData.GetCountFunc(), self.AssetData.GetMaxCountFunc())
end
)
self.BtnDetail.gameObject:SetActiveEx(self.AssetData.OnClick ~= nil)
self.BtnDetail.CallBack = function() self:OnBtnDetailClickByUniqueItem() end
end
function XUiCommonAsset:RefreshTextByItemCount(itemCount)
self.TxtCount.text = itemCount
end
function XUiCommonAsset:RefreshTextByPoint(itemCount, maxCount)
self.TxtCount.text = itemCount .. "/" .. maxCount
end
function XUiCommonAsset:OnBtnDetailClickByBagItem()
XLuaUiManager.Open("UiTip", self.AssetData.ItemId, true, nil)
end
function XUiCommonAsset:OnBtnDetailClickByUniqueItem()
if self.AssetData.OnClick then
self.AssetData.OnClick()
else
return
end
end
return XUiCommonAsset