PGRData/Script/matrix/xui/xuitrpg/xuitrpgworldboss/XUiTRPGWinWorldBoss.lua

110 lines
3.5 KiB
Lua
Raw Normal View History

local XUiTRPGWinWorldBoss = XLuaUiManager.Register(XLuaUi, "UiTRPGWinWorldBoss")
function XUiTRPGWinWorldBoss:OnStart(data)
self.GridReward.gameObject:SetActiveEx(false)
self:InitRewardList(data.RewardGoodsList)
self:SetButtonCallback()
self:ShowPanel(data)
end
function XUiTRPGWinWorldBoss:OnEnable()
self:PlayAnimation("PanelBossSingleinfo", function()
XDataCenter.FunctionEventManager.UnLockFunctionEvent()
end)
end
function XUiTRPGWinWorldBoss:OnDestroy()
XDataCenter.AntiAddictionManager.EndFightAction()
end
-- 物品奖励列表
function XUiTRPGWinWorldBoss:InitRewardList(rewardGoodsList)
rewardGoodsList = rewardGoodsList or {}
self.GridRewardList = {}
local rewards = XRewardManager.MergeAndSortRewardGoodsList(rewardGoodsList)
for i, item in ipairs(rewards) do
local grid
if i == 1 then
grid = XUiGridCommon.New(self, self.GridReward)
else
local ui = CS.UnityEngine.Object.Instantiate(self.GridReward)
grid = XUiGridCommon.New(self, ui)
end
grid.Transform:SetParent(self.PanelRewardContent, false)
grid:Refresh(item, nil, nil, true)
grid.GameObject:SetActive(false)
table.insert(self.GridRewardList, grid)
end
end
function XUiTRPGWinWorldBoss:SetButtonCallback()
self:RegisterClickEvent(self.BtnBlock, self.OnBtnBlockClick)
end
function XUiTRPGWinWorldBoss:ShowPanel(data)
self.StageId = data.StageId
self.RewardGoodsList = data.RewardGoodsList
self.TRPGBossFightResult = data.SettleData and data.SettleData.TRPGBossFightResult
local _, name = XDataCenter.FubenManager.GetFubenNames(data.StageId)
self.TxtDifficult.text = name
self:PlayRewardAnimation()
self:PlayScoreAndTimeAnimation()
end
-- 奖励动画
function XUiTRPGWinWorldBoss:PlayRewardAnimation()
local delay = XDataCenter.FubenManager.SettleRewardAnimationDelay
local interval = XDataCenter.FubenManager.SettleRewardAnimationInterval
local this = self
if not self.GridRewardList or #self.GridRewardList == 0 then
return
end
self.RewardAnimationIndex = 1
XScheduleManager.Schedule(function()
this:PlayReward(this.RewardAnimationIndex)
this.RewardAnimationIndex = this.RewardAnimationIndex + 1
end, interval, #self.GridRewardList, delay)
end
function XUiTRPGWinWorldBoss:PlayReward(index, cb)
self.GridRewardList[index].GameObject:SetActive(true)
end
function XUiTRPGWinWorldBoss:PlayScoreAndTimeAnimation()
if not self.TRPGBossFightResult then return end
-- 播放音效
self.AudioInfo = CS.XAudioManager.PlaySound(XSoundManager.UiBasicsMusic.UiSettle_Win_Number)
local totalTime = self.TRPGBossFightResult.FightTime
local time = CS.XGame.ClientConfig:GetFloat("BossSingleAnimaTime")
XUiHelper.Tween(time, function(f)
if XTool.UObjIsNil(self.Transform) then
return
end
local totalTimeText = XUiHelper.GetTime(math.floor(f * totalTime))
local bossLoseHpText = math.floor(f * self.TRPGBossFightResult.BossDamage)
self.TxtStageTime.text = totalTimeText
self.TxtBossLoseHpScore.text = bossLoseHpText
end, function()
if XTool.UObjIsNil(self.Transform) then
return
end
self:StopAudio()
end)
end
function XUiTRPGWinWorldBoss:StopAudio()
if self.AudioInfo then
self.AudioInfo:Stop()
end
end
function XUiTRPGWinWorldBoss:OnBtnBlockClick()
self:StopAudio()
self:Close()
XTipManager.Execute()
end