154 lines
4.6 KiB
Lua
154 lines
4.6 KiB
Lua
|
local XUiPanelTrialGrid = XClass(nil, "XUiPanelTrialGrid")
|
|||
|
|
|||
|
function XUiPanelTrialGrid:Ctor(ui, uiRoot)
|
|||
|
self.GameObject = ui.gameObject
|
|||
|
self.Transform = ui.transform
|
|||
|
self.UiRoot = uiRoot
|
|||
|
self.RewardPanelList = {}
|
|||
|
XTool.InitUiObject(self)
|
|||
|
self:InitUiAfterAuto()
|
|||
|
XEventManager.AddEventListener(XEventId.EVENT_TRIAL_LEVEL_FINISH, self.OnSettleTrial, self)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelTrialGrid:InitUiAfterAuto()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelTrialGrid:Init(uiRoot, parent)
|
|||
|
self.UiRoot = uiRoot
|
|||
|
self.Parent = parent
|
|||
|
self:CloseFx()
|
|||
|
end
|
|||
|
-- 更新数据
|
|||
|
function XUiPanelTrialGrid:OnRefresh(itemData)
|
|||
|
if not itemData then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self.ItemData = itemData
|
|||
|
-- 设Icon
|
|||
|
local iconpath = self.ItemData.Picture
|
|||
|
self.UiRoot:SetUiSprite(self.ImgIcon, iconpath)
|
|||
|
|
|||
|
-- 设置状态
|
|||
|
self:SetTrialItemState()
|
|||
|
|
|||
|
if self.IsNotFirstFx then
|
|||
|
self:SetTrialItemRewardFx()
|
|||
|
else
|
|||
|
self.IsNotFirstFx = true
|
|||
|
end
|
|||
|
-- 设置名字
|
|||
|
self.TxtNameB.text = itemData.Name
|
|||
|
|
|||
|
-- 推荐等级
|
|||
|
local stagecfg = XDataCenter.FubenManager.GetStageCfg(itemData.StageId)
|
|||
|
local level = stagecfg.RecommandLevel or 1
|
|||
|
self.TxtLevel.text = CS.XTextManager.GetText("RecommendLevelDesc", level)
|
|||
|
|
|||
|
-- 解锁条件
|
|||
|
if itemData.ConditionExplain then
|
|||
|
local conditiontext = ""
|
|||
|
for _, v in ipairs(itemData.ConditionExplain) do
|
|||
|
conditiontext = conditiontext .. v .. "\n"
|
|||
|
end
|
|||
|
self.TxtLock.text = conditiontext
|
|||
|
end
|
|||
|
|
|||
|
-- 设置奖励
|
|||
|
self:SetReward(itemData)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelTrialGrid:SetReward(itemData)
|
|||
|
local rewards = XRewardManager.GetRewardList(itemData.RewardId)
|
|||
|
self.RewardListData = rewards
|
|||
|
local rewardCount = #rewards
|
|||
|
|
|||
|
for i = 1, rewardCount do
|
|||
|
local panel = self.RewardPanelList[i]
|
|||
|
if not panel then
|
|||
|
local ui = CS.UnityEngine.Object.Instantiate(self.PanelReward)
|
|||
|
ui.transform:SetParent(self.UiContent, false)
|
|||
|
ui.gameObject:SetActive(true)
|
|||
|
ui.gameObject.name = string.format("PanelReward%d", i)
|
|||
|
panel = XUiGridCommon.New(self.UiRoot, ui)
|
|||
|
table.insert(self.RewardPanelList, i, panel)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
for i = 1, #self.RewardPanelList do
|
|||
|
self.RewardPanelList[i].GameObject:SetActive(i <= rewardCount)
|
|||
|
if i <= rewardCount then
|
|||
|
self.RewardPanelList[i]:Refresh(rewards[i])
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 通关改状态
|
|||
|
function XUiPanelTrialGrid:OnSettleTrial(res)
|
|||
|
if res then
|
|||
|
if self.ItemData then
|
|||
|
local StageId = res
|
|||
|
if self.ItemData.StageId == StageId then
|
|||
|
XDataCenter.TrialManager.TrialLevelPassState(self.ItemData.Id)
|
|||
|
self:SetTrialItemState()
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 奖励领取后改进度
|
|||
|
function XUiPanelTrialGrid:AfterRewardGetedPro(cb)
|
|||
|
local prolen = XTrialConfigs.GetForTotalLength()
|
|||
|
if self.ItemData.Id > prolen then
|
|||
|
local index = self.ItemData.Id - prolen
|
|||
|
self.Parent:SetTypeTrialSignlePro(index, cb)
|
|||
|
else
|
|||
|
self.Parent:SetTypeTrialSignlePro(self.ItemData.Id, cb)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 设置状态
|
|||
|
function XUiPanelTrialGrid:SetTrialItemState()
|
|||
|
local id = self.ItemData.Id
|
|||
|
if XDataCenter.TrialManager.TrialLevelLock(id) then --解锁的
|
|||
|
self.ImgLock.gameObject:SetActiveEx(false)
|
|||
|
if XDataCenter.TrialManager.TrialLevelFinished(id) then
|
|||
|
if XDataCenter.TrialManager.TrialRewardGeted(id) then
|
|||
|
self.ImgCanGet.gameObject:SetActiveEx(false)
|
|||
|
self.ImgGeted.gameObject:SetActiveEx(true)
|
|||
|
else
|
|||
|
self.ImgCanGet.gameObject:SetActiveEx(true)
|
|||
|
self.ImgGeted.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
else
|
|||
|
self.ImgCanGet.gameObject:SetActiveEx(false)
|
|||
|
self.ImgGeted.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
else
|
|||
|
self.ImgLock.gameObject:SetActiveEx(true)
|
|||
|
self.ImgCanGet.gameObject:SetActiveEx(false)
|
|||
|
self.ImgGeted.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 关闭特效,防止特效透ui。
|
|||
|
function XUiPanelTrialGrid:CloseFx()
|
|||
|
self.ImgSelect.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelTrialGrid:OpenFx()
|
|||
|
self.ImgSelect.gameObject:SetActiveEx(true)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelTrialGrid:SetTrialItemRewardFx()
|
|||
|
if self.ItemData and self.ItemData.Id then
|
|||
|
local id = self.ItemData.Id
|
|||
|
if XDataCenter.TrialManager.TrialLevelLock(id) and XDataCenter.TrialManager.TrialLevelFinished(id) and not XDataCenter.TrialManager.TrialRewardGeted(id) then
|
|||
|
self:OpenFx()
|
|||
|
return
|
|||
|
end
|
|||
|
end
|
|||
|
self:CloseFx()
|
|||
|
end
|
|||
|
|
|||
|
return XUiPanelTrialGrid
|