PGRData/Script/matrix/xui/xuireform/XUiReformBattlePreview.lua

184 lines
6.4 KiB
Lua

--######################## XUiEnemyGrid ########################
local XUiEnemyGrid = XClass(nil, "XUiEnemyGrid")
function XUiEnemyGrid:Ctor(ui, rootUi)
self.GameObject = ui.gameObject
self.Transform = ui.transform
XTool.InitUiObject(self)
self.EnemySource = nil
self.RootUi = rootUi
self.BtnClick.CallBack = function() self:OnBtnClicked() end
end
function XUiEnemyGrid:SetData(data)
self.EnemySource = data
self.TxtLevel.text = data:GetShowLevel()
self.RImgIcon:SetRawImage(data:GetIcon())
self.Tag.gameObject:SetActiveEx(data:GetIsActive() and data:GetEntityType() == XReformConfigs.EntityType.Entity)
self.TagNew.gameObject:SetActiveEx(data:GetIsActive() and data:GetEntityType() == XReformConfigs.EntityType.Add)
end
function XUiEnemyGrid:OnBtnClicked()
local buffDatas = self.EnemySource:GetBuffDetailViewModels()
if #buffDatas > 0 then
self.RootUi:StopAutoCloseTimer()
XLuaUiManager.Open("UiReformBuffTips", buffDatas, nil, XUiHelper.GetText("ReformEnemyBuffTipsTitle")
, function()
self.RootUi:StartAutoCloseTimer()
end)
end
end
--######################## XUiEnemyGrid ########################
local XUiEnvironmentGrid = XClass(nil, "XUiEnvironmentGrid")
function XUiEnvironmentGrid:Ctor(ui, rootUi)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.Environment = nil
XTool.InitUiObject(self)
self.RootUi = rootUi
self.BtnClick.CallBack = function() self:OnBtnClicked() end
end
function XUiEnvironmentGrid:SetData(data)
self.Environment = data
self.ImgIcon:SetSprite(data:GetPreviewIcon())
-- self.EnvTag.gameObject:SetActiveEx(source:GetIsActive())
self.Tag.gameObject:SetActiveEx(false)
self.TxtScene.text = data:GetPreviewText()
end
function XUiEnvironmentGrid:OnBtnClicked()
self.RootUi:StopAutoCloseTimer()
local environmentViewModels = {}
for _, env in ipairs(self.RootUi:GetEnvironments()) do
table.insert(environmentViewModels, env:GetViewModel())
end
XLuaUiManager.Open("UiReformBuffTips", environmentViewModels, true, XUiHelper.GetText("ReformEnvBattlePreviewTitie")
, function()
self.RootUi:StartAutoCloseTimer()
end)
end
--######################## XUiReformBattlePreview ########################
local XUiReformBattlePreview = XLuaUiManager.Register(XLuaUi, "UiReformPreview2")
local INTERVAL = 0.1
function XUiReformBattlePreview:OnAwake()
self.Team = nil
self.StageId = nil
self.Time = 0
self.ReformManager = XDataCenter.ReformActivityManager
self.Environments = nil
end
function XUiReformBattlePreview:OnStart(team, stageId)
self.Time = self.ReformManager.GetPreviewCloseTime()
self.Team = team
self.StageId = stageId
self:RefreshTime()
self:SetAutoCloseInfo(XTime.GetServerNowTimestamp() + self.Time, function(isClose)
self:HandleAutoClose(isClose)
end, INTERVAL * 1000, INTERVAL * 1000)
-- 刷新敌人列表
self:RefreshEnemies()
-- 刷新环境列表
self:RefreshEnvironments()
local baseStage = self.ReformManager.GetBaseStage(self.StageId)
self.TxtNameTitle.text = XUiHelper.GetText("ReformReadyTitleText", baseStage:GetName()
, baseStage:GetCurrentEvolvableStage():GetName())
end
function XUiReformBattlePreview:GetEnvironments()
return self.Environments
end
function XUiReformBattlePreview:StartAutoCloseTimer()
self:SetAutoCloseInfo(XTime.GetServerNowTimestamp() + self.Time, function(isClose)
self:HandleAutoClose(isClose)
end, INTERVAL * 1000, INTERVAL * 1000)
self:_StartAutoCloseTimer()
end
function XUiReformBattlePreview:StopAutoCloseTimer()
self:_StopAutoCloseTimer()
end
function XUiReformBattlePreview:OnEnable()
XUiReformBattlePreview.Super.OnEnable(self)
end
function XUiReformBattlePreview:OnDisable()
XUiReformBattlePreview.Super.OnDisable(self)
end
--######################## 私有方法 ########################
function XUiReformBattlePreview:HandleAutoClose(isClose)
-- 到期了直接回主界面
if not self.ReformManager.GetIsOpen() then
self.ReformManager.HandleActivityEndTime()
return
end
if isClose then
self:Remove()
self:EnterFight()
else
self.Time = self.Time - INTERVAL
self:RefreshTime()
end
end
function XUiReformBattlePreview:RefreshEnemies()
local evolvableStage = self.ReformManager.GetBaseStage(self.StageId):GetCurrentEvolvableStage()
local enemyGroup = evolvableStage:GetEvolvableGroupByType(XReformConfigs.EvolvableGroupType.Enemy)
local enemies = enemyGroup:GetSourcesWithEntity(false)
self.GridEnemy.gameObject:SetActiveEx(false)
local go, grid
for i = 1, #enemies do
go = CS.UnityEngine.Object.Instantiate(self.GridEnemy, self.PanelEnemy)
go.gameObject:SetActiveEx(true)
grid = XUiEnemyGrid.New(go, self)
grid:SetData(enemies[i])
end
end
function XUiReformBattlePreview:RefreshEnvironments()
local evolvableStage = self.ReformManager.GetBaseStage(self.StageId):GetCurrentEvolvableStage()
local envIds = evolvableStage:GetEnvIds()
local environmentGroup = evolvableStage:GetEvolvableGroupByType(XReformConfigs.EvolvableGroupType.Environment)
local environments = {}
for _, envId in ipairs(envIds) do
table.insert(environments, environmentGroup:GetEnvironmentById(envId))
end
self.GridScene.gameObject:SetActiveEx(false)
local go, grid
for i = 1, #environments do
go = CS.UnityEngine.Object.Instantiate(self.GridScene, self.PanelEnv)
go.gameObject:SetActiveEx(true)
grid = XUiEnvironmentGrid.New(go, self)
grid:SetData(environments[i])
end
self.PanelEnvNone.gameObject:SetActiveEx(#environments <= 0)
self.Environments = environments
end
function XUiReformBattlePreview:RefreshTime()
self.TxtTime.text = XUiHelper.GetText("ReformBattlePreviewTime", math.ceil(math.max(0, self.Time)))
end
function XUiReformBattlePreview:EnterFight()
local stageConfig = XDataCenter.FubenManager.GetStageCfg(self.StageId)
local teamId = self.Team:GetId()
local isAssist = false
local challengeCount = 1
XDataCenter.FubenManager.EnterFight(stageConfig, teamId, isAssist, challengeCount, nil, function(res)
if res.Code == XReformConfigs.EndTimeCode then
self.ReformManager.HandleActivityEndTime()
end
end)
end
return XUiReformBattlePreview