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

88 lines
2.9 KiB
Lua
Raw Normal View History

-- 通用道具显示按钮控件
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