PGRData/Script/matrix/xui/xuigoldenminer/mappreview/XUiGoldenMinerBUFFDetails.lua
2024-09-01 22:49:41 +02:00

92 lines
No EOL
3.3 KiB
Lua

local XUiDisplayTitleGrid = require("XUi/XUiGoldenMiner/Grid/XUiDisplayTitleGrid")
local XUiDisplayGrid = require("XUi/XUiGoldenMiner/Grid/XUiDisplayGrid")
---黄金矿工地图预览
---@class UiGoldenMinerBUFFDetails : XLuaUi
local UiGoldenMinerBUFFDetails = XLuaUiManager.Register(XLuaUi, "UiGoldenMinerBUFFDetails")
function UiGoldenMinerBUFFDetails:OnAwake()
self:AddBtnClickListener()
end
function UiGoldenMinerBUFFDetails:OnStart(mapId)
self._MapId = mapId
self:UpdateMapPreview()
self:UpdateDisplay()
end
---region Ui - MapPreview
function UiGoldenMinerBUFFDetails:UpdateMapPreview()
local previewUrl = XGoldenMinerConfigs.GetMapPreviewPic(self._MapId)
if not string.IsNilOrEmpty(previewUrl) then
self.RImgNextLevel:SetRawImage(previewUrl)
end
end
---endregion
---region Ui - Display
function UiGoldenMinerBUFFDetails:UpdateDisplay()
local db = XDataCenter.GoldenMinerManager.GetGoldenMinerDataDb()
local data = db:GetDisplayData()
self:_UpdateDisplayShip(data)
self:_UpdateDisplayItem(data)
self:_UpdateDisplayBuff(data)
self.PanelResources.gameObject:SetActiveEx(false)
self.NewsListBg.gameObject:SetActiveEx(false)
end
---@param data XGoldenMinerDisplayData
function UiGoldenMinerBUFFDetails:_UpdateDisplayShip(data)
local buffList, characterDisplayData = data:GetDisplayShipList()
self:_CreateTitleObj(XGoldenMinerConfigs.BuffDisplayType.Ship)
self:_CreateDescObj(characterDisplayData.icon, characterDisplayData.desc)
if not XTool.IsTableEmpty(buffList) then
for _, buffId in ipairs(buffList) do
self:_CreateDescObj(XGoldenMinerConfigs.GetBuffIcon(buffId), XGoldenMinerConfigs.GetBuffDesc(buffId))
end
end
end
---@param data XGoldenMinerDisplayData
function UiGoldenMinerBUFFDetails:_UpdateDisplayItem(data)
local buffList = data:GetDisplayItemList()
if XTool.IsTableEmpty(buffList) then
return
end
self:_CreateTitleObj(XGoldenMinerConfigs.BuffDisplayType.Item)
for _, buff in ipairs(buffList) do
--self:_CreateDescObj(XGoldenMinerConfigs.GetBuffIcon(buffId), XGoldenMinerConfigs.GetBuffDesc(buffId))
self:_CreateDescObj(buff.icon, buff.desc)
end
end
---@param data XGoldenMinerDisplayData
function UiGoldenMinerBUFFDetails:_UpdateDisplayBuff(data)
local buffList = data:GetDisplayBuffList()
if XTool.IsTableEmpty(buffList) then
return
end
self:_CreateTitleObj(XGoldenMinerConfigs.BuffDisplayType.Buff)
for _, buffId in ipairs(buffList) do
self:_CreateDescObj(XGoldenMinerConfigs.GetBuffIcon(buffId), XGoldenMinerConfigs.GetBuffDesc(buffId))
end
end
function UiGoldenMinerBUFFDetails:_CreateTitleObj(type)
XUiDisplayTitleGrid.New(XUiHelper.Instantiate(self.PanelResources.gameObject, self.PanelResources.transform.parent),
XGoldenMinerConfigs.GetTxtDisplayMainTitle(type),
XGoldenMinerConfigs.GetTxtDisplaySecondTitle(type))
end
function UiGoldenMinerBUFFDetails:_CreateDescObj(icon, desc)
local grid = XUiDisplayGrid.New(XUiHelper.Instantiate(self.NewsListBg.gameObject, self.NewsListBg.transform.parent))
grid:Refresh(icon, desc)
end
---endregion
---region Ui - BtnListener
function UiGoldenMinerBUFFDetails:AddBtnClickListener()
self:RegisterClickEvent(self.BtnClose, self.Close)
self:RegisterClickEvent(self.BtnTanchuangClose, self.Close)
end
---endregion