205 lines
6.2 KiB
Lua
205 lines
6.2 KiB
Lua
|
local XUiPanelTrialSelect = XClass(nil, "XUiPanelTrialSelect")
|
||
|
local XUiGridTrialDesItem = require("XUi/XUiTrial/XUiGridTrialDesItem")
|
||
|
|
||
|
function XUiPanelTrialSelect:Ctor(ui, uiRoot)
|
||
|
self.GameObject = ui.gameObject
|
||
|
self.Transform = ui.transform
|
||
|
self.UiRoot = uiRoot
|
||
|
self.RewardPanelList = {}
|
||
|
XTool.InitUiObject(self)
|
||
|
self:AddListener()
|
||
|
self:InitUiAfterAuto()
|
||
|
end
|
||
|
|
||
|
function XUiPanelTrialSelect:InitUiAfterAuto()
|
||
|
self.DynamicDesTable = XDynamicTableNormal.New(self.SViewTrialDesList.gameObject)
|
||
|
self.DynamicDesTable:SetProxy(XUiGridTrialDesItem)
|
||
|
self.DynamicDesTable:SetDelegate(self)
|
||
|
end
|
||
|
|
||
|
function XUiPanelTrialSelect:UpdateView(itemData)
|
||
|
if not itemData then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
-- 设置说明
|
||
|
self.TxtDes.text = itemData.Explain
|
||
|
|
||
|
-- 设置名字
|
||
|
self.TxtName.text = itemData.Name
|
||
|
|
||
|
-- 设置图片
|
||
|
local iconpath = itemData.BigPicture
|
||
|
self.ImgIconA:SetRawImage(iconpath)
|
||
|
|
||
|
-- 设置奖励
|
||
|
local id = itemData.Id
|
||
|
local flag = XDataCenter.TrialManager.TrialLevelFinished(id)
|
||
|
if not flag or (flag and not XDataCenter.TrialManager.TrialRewardGeted(id)) then
|
||
|
self.UiContent.gameObject:SetActiveEx(true)
|
||
|
self:SetReward(itemData)
|
||
|
else
|
||
|
self.UiContent.gameObject:SetActiveEx(false)
|
||
|
end
|
||
|
|
||
|
-- 设置描述
|
||
|
self.Des = itemData.Des
|
||
|
self.DynamicDesTable:SetDataSource(itemData.Des)
|
||
|
self.DynamicDesTable:ReloadDataASync(1)
|
||
|
|
||
|
-- 等级
|
||
|
self.StageId = itemData.StageId
|
||
|
local stagecfg = XDataCenter.FubenManager.GetStageCfg(self.StageId)
|
||
|
local level = stagecfg.RecommandLevel or 1
|
||
|
self.TxtLevel.text = level
|
||
|
|
||
|
-- 电量
|
||
|
local active = stagecfg.RequireActionPoint or 0
|
||
|
self.TxtNums.text = active
|
||
|
|
||
|
-- 设置战斗力
|
||
|
self:SetAbility(itemData)
|
||
|
|
||
|
-- 设置进度
|
||
|
self:SetPro(itemData)
|
||
|
end
|
||
|
|
||
|
function XUiPanelTrialSelect:SetPro(itemData)
|
||
|
if itemData.Type == XDataCenter.TrialManager.TrialTypeCfg.TrialFor then
|
||
|
self.TxtPro.text = string.format("%s/%s", itemData.Id, XTrialConfigs.GetForTotalLength())
|
||
|
else
|
||
|
self.TxtPro.text = string.format(
|
||
|
"%s/%s",
|
||
|
itemData.Id - XTrialConfigs.GetForTotalLength(),
|
||
|
XTrialConfigs.GetBackEndTotalLength()
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiPanelTrialSelect:SetAbility(itemData)
|
||
|
local charlist = XDataCenter.CharacterManager.GetCharacterList()
|
||
|
local maxAbility = 0
|
||
|
|
||
|
for _, v in pairs(charlist) do
|
||
|
local ability = v.Ability or 0
|
||
|
if ability > maxAbility then
|
||
|
maxAbility = ability
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local ability = itemData.AvgAbility
|
||
|
|
||
|
if ability < maxAbility then
|
||
|
self.ImgEnough.gameObject:SetActive(true)
|
||
|
self.ImgNotEnough.gameObject:SetActive(false)
|
||
|
self.TxtFight.text = CS.XTextManager.GetText("AbilityCurrentSufficientTips", ability, math.floor(maxAbility))
|
||
|
else
|
||
|
self.ImgEnough.gameObject:SetActive(false)
|
||
|
self.ImgNotEnough.gameObject:SetActive(true)
|
||
|
self.TxtFightA.text = CS.XTextManager.GetText("AbilityCurrentInSufficientTips", ability, math.floor(maxAbility))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiPanelTrialSelect:SetReward(itemData)
|
||
|
local rewards = XRewardManager.GetRewardList(itemData.RewardId)
|
||
|
if not rewards then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
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 XUiPanelTrialSelect:OnDynamicTableEvent(event, index, grid)
|
||
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
|
||
|
grid:Init(self.UiRoot)
|
||
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
||
|
local data = self.Des[index]
|
||
|
grid:OnRefresh(data)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- 打开界面
|
||
|
function XUiPanelTrialSelect:OpenView(data)
|
||
|
self.UiRoot:PlayAnimation("AniTrialDetailsOpen")
|
||
|
self.GameObject:SetActive(true)
|
||
|
self.ViewData = data
|
||
|
self:UpdateView(data)
|
||
|
self.UiRoot:CloseMainView()
|
||
|
self.UiRoot:ClostMainListItemFx()
|
||
|
end
|
||
|
|
||
|
-- 关闭界面
|
||
|
function XUiPanelTrialSelect:CloseView()
|
||
|
self.UiRoot:SetListItemFx()
|
||
|
self.GameObject:SetActive(false)
|
||
|
self.UiRoot:ReturnPreTrialBg()
|
||
|
self.UiRoot.TrialMain.GameObject:SetActive(true)
|
||
|
end
|
||
|
|
||
|
function XUiPanelTrialSelect:AddListener()
|
||
|
self.BtnEnterB.CallBack = function() self:OnBtnEnterBClick() end
|
||
|
end
|
||
|
|
||
|
function XUiPanelTrialSelect:OnSViewRewardListAClick()
|
||
|
end
|
||
|
|
||
|
function XUiPanelTrialSelect:OnBtnEnterBClick()
|
||
|
if self.StageId then
|
||
|
self.UiRoot:CloseSelectView()
|
||
|
local Stage = XDataCenter.FubenManager.GetStageCfg(self.StageId)
|
||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_FUBEN_ENTERFIGHT, Stage)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiPanelTrialSelect:OnGetEvents()
|
||
|
return { XEventId.EVENT_FUBEN_CLOSE_FUBENSTAGEDETAIL, XEventId.EVENT_FUBEN_ENTERFIGHT }
|
||
|
end
|
||
|
--事件监听
|
||
|
function XUiPanelTrialSelect:OnNotify(evt, ...)
|
||
|
-- if evt == XEventId.EVENT_FUBEN_CLOSE_FUBENSTAGEDETAIL then
|
||
|
-- else
|
||
|
if evt == XEventId.EVENT_FUBEN_ENTERFIGHT then
|
||
|
self:EnterFight(...)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiPanelTrialSelect:EnterFight(stage)
|
||
|
if not XDataCenter.FubenManager.CheckPreFight(stage) then
|
||
|
return
|
||
|
end
|
||
|
if not XDataCenter.FubenManager.CheckPreFight(stage) then
|
||
|
return
|
||
|
end
|
||
|
if XDataCenter.BfrtManager.CheckStageTypeIsBfrt(stage.StageId) then
|
||
|
local groupId = XDataCenter.BfrtManager.GetGroupIdByBaseStage(stage.StageId)
|
||
|
XLuaUiManager.Open("UiBfrtDeploy", groupId)
|
||
|
else
|
||
|
if XTool.USENEWBATTLEROOM then
|
||
|
XLuaUiManager.Open("UiBattleRoleRoom", stage.StageId)
|
||
|
else
|
||
|
XLuaUiManager.Open("UiNewRoomSingle", stage.StageId)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
return XUiPanelTrialSelect
|