---光辉同行关卡详细信息界面
local XUiFubenBrilliantWalkDetail = XLuaUiManager.Register(XLuaUi, "UiFubenBrilliantWalkDetail")
local XUIBrilliantWalkStageDetailPluginGrid = require("XUi/XUiBrilliantWalk/XUIGrid/XUIBrilliantWalkStageDetailPluginGrid")
--local XUIBrilliantWalkStageDetailUnlockGrid = require("XUi/XUiBrilliantWalk/XUIGrid/XUIBrilliantWalkStageDetailUnlockGrid")
local BrilliantWalkEnergyItem = CS.XGame.ClientConfig:GetInt("BrilliantWalkEnergyItem")

function XUiFubenBrilliantWalkDetail:OnAwake()
    self.PanelBossDetail.gameObject:SetActiveEx(false)
    self.PanelDetail.gameObject:SetActiveEx(true)
    self.PanelStoryDetail.gameObject:SetActiveEx(false)
    XTool.InitUiObjectByUi(self,self.PanelDetail)
    self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint)
    --推荐插件配置
    self.PluginGridPool = XStack.New() --插件UI内存池
    self.PluginGridList = XStack.New() --正在使用的插件UI
    self.GridRecommendPlugin.gameObject:SetActiveEx(false) --插件UI template
    self.GridRecommendNone.gameObject:SetActiveEx(false)
    --解锁插件
    self.UnlockGridPool = XStack.New() --插件解锁预览 UI内存池
    self.UnlockGridList = XStack.New() --正在使用的插件解锁预览UI
    self.GridCommon.gameObject:SetActiveEx(false) --插件解锁预览UI template
    --解锁能量Grid
    self.EnergyGrid = XUiGridCommon.New(self, self.GridCommon2)
    self.EnergyGrid:Refresh({
        TemplateId = BrilliantWalkEnergyItem,
        TipNotShowCount = true,
    })
    self.EnergyGrid:SetUiActive(self.EnergyGrid.ImgQuality, false)
    
    self.BtnEnter.CallBack = function()
        self:OnBtnEnterClick()
    end
    self.Close.CallBack = function()
        self:OnBtnCloseClick()
    end
end
function XUiFubenBrilliantWalkDetail:OnEnable(openUIData)
    self.StageId = openUIData.StageId
    self.EnterCallback = openUIData.StageEnterCallback
    self.PluginSkipCallback = openUIData.PluginSkipCallback
    self.CloseCallback = openUIData.CloseCallback
    self:UpdateView()
end
function XUiFubenBrilliantWalkDetail:OnDisable()
    self:PluginGridReturnPool()
    self:UnlockGridReturnPool()
end
--获取插件item
function XUiFubenBrilliantWalkDetail:GetPluginGrid()
    local item
    if self.PluginGridPool:IsEmpty() then
        local object = CS.UnityEngine.Object.Instantiate(self.GridRecommendPlugin)
        object.transform:SetParent(self.PanelRecommend, false)
        item = XUIBrilliantWalkStageDetailPluginGrid.New(object,self)
    else
        item = self.PluginGridPool:Pop()
    end
    item.GameObject:SetActiveEx(true)
    self.PluginGridList:Push(item)
    return item
end
function XUiFubenBrilliantWalkDetail:GetUnlockGrid()
    local item
    if self.UnlockGridPool:IsEmpty() then
        local object = CS.UnityEngine.Object.Instantiate(self.GridCommon)
        object.transform:SetParent(self.PanelDropContent, false)
        item = XUiGridCommon.New(self, object)
        item.TagGet = item.Transform:FindTransform("TagGet")
        --item = XUIBrilliantWalkStageDetailUnlockGrid.New(object,item)
    else
        item = self.UnlockGridPool:Pop()
    end
    item.GameObject:SetActiveEx(true)
    self.UnlockGridList:Push(item)
    return item
end
--所有使用中插件Item回归内存池
function XUiFubenBrilliantWalkDetail:PluginGridReturnPool()
    while (not self.PluginGridList:IsEmpty()) do
        local object = self.PluginGridList:Pop()
        object.GameObject:SetActiveEx(false)
        self.PluginGridPool:Push(object)
    end
end
function XUiFubenBrilliantWalkDetail:UnlockGridReturnPool()
    while (not self.UnlockGridList:IsEmpty()) do
        local object = self.UnlockGridList:Pop()
        object.GameObject:SetActiveEx(false)
        self.UnlockGridPool:Push(object)
    end
end
--刷新界面
function XUiFubenBrilliantWalkDetail:UpdateView()
    local UiData = XDataCenter.BrilliantWalkManager.GetUiDataStageDetail(self.StageId)
    --关卡名
    self.TxtTitle.text = UiData.StageName
    --消耗血清
    self.TxtATNums.text = UiData.ActionPoint
    --推荐配置
    self:PluginGridReturnPool()
    if #UiData.RecommendBuild > 0 then
        self.GridRecommendNone.gameObject:SetActiveEx(false)
        for index,plugInId in pairs(UiData.RecommendBuild) do
            local item = self:GetPluginGrid()
            item:Refresh(plugInId)
            item:SetEquiped(UiData.RecommendBuildEquipState[index])
        end
    else
        self.GridRecommendNone.gameObject:SetActiveEx(true)
    end


    self:UnlockGridReturnPool()
    self.DrolListNone.gameObject:SetActiveEx(false)
    --解锁能量
    if UiData.UnlockEnergy > 0 then
        self.EnergyGrid.GameObject:SetActiveEx(true)
        self.EnergyGrid.TxtCount.text = tostring(UiData.UnlockEnergy)
        self.EnergyGrid.TagGet.gameObject:SetActiveEx(UiData.IsClear)
    else
        self.EnergyGrid.GameObject:SetActiveEx(false)
    end
    --解锁组件
    if #UiData.UnlockPlugin > 0 then
        for index,plugInId in pairs(UiData.UnlockPlugin) do
            local item = self:GetUnlockGrid()
            local itemId = XBrilliantWalkConfigs.GetBuildPluginItemId(plugInId)
            item:Refresh({
                TemplateId = itemId,
                TipNotShowCount = true,
                TipShowBlackBg = true,
            })
            item.TagGet.gameObject:SetActiveEx(UiData.IsClear)
            item:SetUiActive(item.ImgQuality, false)
        end
    end
    if UiData.UnlockEnergy == 0 and #UiData.UnlockPlugin == 0 then
        self.DrolListNone.gameObject:SetActiveEx(true)
    end
end
--点击战斗准备按钮
function XUiFubenBrilliantWalkDetail:OnBtnEnterClick()
    if self.EnterCallback then self.EnterCallback(self.StageId) end
end
--点击空白区域关闭按钮
function XUiFubenBrilliantWalkDetail:OnBtnCloseClick()
    if self.CloseCallback then self.CloseCallback() end
end
--点击插件跳转按钮
function XUiFubenBrilliantWalkDetail:OnPluginSkipClick(pluginId)
    if self.PluginSkipCallback then self.PluginSkipCallback(pluginId) end
end