forked from endernon/PGRData
227 lines
No EOL
9.3 KiB
Lua
227 lines
No EOL
9.3 KiB
Lua
local AnimationPhase = XFubenSpecialTrainConfig.AnimationPhase
|
||
|
||
---@class XUiSpecialTrainBreakthroughSettleGrid
|
||
local XUiSpecialTrainBreakthroughSettleGrid = XClass(nil, "XUiSpecialTrainBreakthroughSettleGrid")
|
||
|
||
function XUiSpecialTrainBreakthroughSettleGrid:Ctor(ui, parent)
|
||
self.GameObject = ui.gameObject
|
||
self.Transform = ui.transform
|
||
self.Parent = parent
|
||
XTool.InitUiObject(self)
|
||
self:InitButton()
|
||
|
||
self._PlayerId = false
|
||
self._Data = false
|
||
self._PhaseScore = { Type = AnimationPhase.Phase1, Time = 0, ScrollTime = 1.5 }
|
||
self._PhaseDeduct = { Type = AnimationPhase.Phase1, Time = 0, ScrollTime = 1.5 }
|
||
self._PhaseScoreTotal = { Type = AnimationPhase.Phase1, Time = 0, ScrollTime = 1.5 }
|
||
end
|
||
|
||
function XUiSpecialTrainBreakthroughSettleGrid:InitButton()
|
||
XUiHelper.RegisterClickEvent(self, self.BtnDz, self.OnBtnLikeClick)
|
||
XUiHelper.RegisterClickEvent(self, self.BtnJhy, self.OnBtnAddFriendClick)
|
||
end
|
||
|
||
function XUiSpecialTrainBreakthroughSettleGrid:SetData(data)
|
||
if not data then
|
||
return
|
||
end
|
||
self._Data = data
|
||
|
||
local playerId = data.PlayerId
|
||
self._PlayerId = playerId
|
||
local beginData = XDataCenter.FubenManager.GetFightBeginData()
|
||
local playerList = beginData and beginData.PlayerList
|
||
local playerInfo = playerList and playerList[playerId]
|
||
if not playerInfo then
|
||
playerInfo = {
|
||
Name = XPlayer.Name,
|
||
HeadPortraitId = XPlayer.CurrHeadPortraitId,
|
||
HeadFrameId = XPlayer.CurrHeadFrameId,
|
||
}
|
||
end
|
||
if playerInfo.CharacterId then
|
||
local imagePath = XCharacterCuteConfig.GetCuteModelHalfBodyImage(playerInfo.CharacterId)
|
||
local uiObject = XUiPLayerHead.Create(self.Head, false)
|
||
local imageIcon = uiObject:GetObject("ImgIcon")
|
||
imageIcon:SetRawImage(imagePath)
|
||
end
|
||
--XUiPLayerHead.InitPortrait(playerInfo.HeadPortraitId, playerInfo.HeadFrameId, self.Head)
|
||
self.TxtName.text = playerInfo.Name
|
||
|
||
-- 新纪录
|
||
if self.PanelNewTag then
|
||
if data.IsHellStage then
|
||
if playerId == XPlayer.Id
|
||
and XDataCenter.FubenSpecialTrainManager.BreakthroughGetPersonalScoreOld() < data.PersonalScore
|
||
then
|
||
self.PanelNewTag.gameObject:SetActiveEx(true)
|
||
else
|
||
self.PanelNewTag.gameObject:SetActiveEx(false)
|
||
end
|
||
else
|
||
self.PanelNewTag.gameObject:SetActiveEx(false)
|
||
end
|
||
end
|
||
|
||
-- mvp
|
||
--self.TxtMvpTeammateDamage.gameObject:SetActiveEx(data.TeammateDamage == dataMvp.TeammateDamage)
|
||
--self.TxtMvpWeakness.gameObject:SetActiveEx(data.BossDamage == dataMvp.BossDamage)
|
||
--self.TxtMvpScore.gameObject:SetActiveEx(data.PersonalScore == dataMvp.PersonalScore)
|
||
|
||
-- 非困难关卡,无友伤
|
||
--local stageId = beginData and beginData.StageId
|
||
--if not XFubenSpecialTrainConfig.IsHellStageId(stageId) then
|
||
-- self.PanelTeammateDamage.gameObject:SetActiveEx(false)
|
||
--end
|
||
end
|
||
|
||
function XUiSpecialTrainBreakthroughSettleGrid:OnBtnLikeClick()
|
||
XDataCenter.RoomManager.AddLike(self._PlayerId)
|
||
self.BtnDz:SetButtonState(CS.UiButtonState.Disable)
|
||
end
|
||
|
||
function XUiSpecialTrainBreakthroughSettleGrid:OnBtnAddFriendClick()
|
||
XDataCenter.SocialManager.ApplyFriend(self._PlayerId)
|
||
end
|
||
|
||
function XUiSpecialTrainBreakthroughSettleGrid:InitAnimation()
|
||
local data = self._Data
|
||
if not data then
|
||
return
|
||
end
|
||
end
|
||
|
||
function XUiSpecialTrainBreakthroughSettleGrid:IsEndPersonalScoreAndDeduct()
|
||
return self._PhaseScore.Type == AnimationPhase.PhaseEnd
|
||
and self._PhaseDeduct.Type == AnimationPhase.PhaseEnd
|
||
end
|
||
|
||
--个人积分:data.BaseScoreSummation + data.HitSummation
|
||
--伤害扣减:data.BossDamage + data.TeammateDamage
|
||
--个人总积分:data.RoundSummation + data.RemainRoundAddition
|
||
function XUiSpecialTrainBreakthroughSettleGrid:Tick(deltaTime, isEndPersonalScoreAndDeduct)
|
||
local data = self._Data
|
||
|
||
--region 基础积分
|
||
if self._PhaseScore.Type == AnimationPhase.Phase1 then
|
||
self._PhaseScore.Type = AnimationPhase.Phase2
|
||
self.TxtWeakness.text = data.BaseScoreSummation
|
||
|
||
elseif self._PhaseScore.Type == AnimationPhase.Phase2 then
|
||
-- 个人命中
|
||
if data.HitSummation > 0 then
|
||
if self._PhaseScore.Time == 0 then
|
||
self.TxtJiaCheng03.text = XUiHelper.GetText("SpecialTrainBreakthroughSettleDesc3", data.HitSummation)
|
||
self.TxtJiaCheng03.gameObject:SetActiveEx(true)
|
||
end
|
||
self._PhaseScore.Time = self._PhaseScore.Time + deltaTime
|
||
if self._PhaseScore.Time > self._PhaseScore.ScrollTime then
|
||
self._PhaseScore.Type = AnimationPhase.Phase3
|
||
self._PhaseScore.Time = 0
|
||
self.TxtJiaCheng03.gameObject:SetActiveEx(false)
|
||
end
|
||
else
|
||
self.TxtJiaCheng03.gameObject:SetActiveEx(false)
|
||
self._PhaseScore.Type = AnimationPhase.Phase3
|
||
end
|
||
|
||
elseif self._PhaseScore.Type == AnimationPhase.Phase3 then
|
||
self._PhaseScore.Type = AnimationPhase.PhaseEnd
|
||
self.TxtWeakness.text = data.BaseScoreSummation + data.HitSummation
|
||
end
|
||
--endregion 基础积分
|
||
|
||
--region 伤害扣减
|
||
if self._PhaseDeduct.Type == AnimationPhase.Phase1 then
|
||
self._PhaseDeduct.Type = AnimationPhase.Phase2
|
||
self.TxtTeammateDamage.text = 0
|
||
|
||
elseif self._PhaseDeduct.Type == AnimationPhase.Phase2 then
|
||
-- boss伤害
|
||
if data.BossDamage ~= 0 then
|
||
if self._PhaseDeduct.Time == 0 then
|
||
self.TxtJiaCheng02.text = XUiHelper.GetText("SpecialTrainBreakthroughSettleDesc2", math.abs(data.BossDamage))
|
||
self.TxtJiaCheng02.gameObject:SetActiveEx(true)
|
||
end
|
||
self._PhaseDeduct.Time = self._PhaseDeduct.Time + deltaTime
|
||
if self._PhaseDeduct.Time > self._PhaseDeduct.ScrollTime then
|
||
self._PhaseDeduct.Type = AnimationPhase.Phase3
|
||
self._PhaseDeduct.Time = 0
|
||
self.TxtJiaCheng02.gameObject:SetActiveEx(false)
|
||
self.TxtTeammateDamage.text = data.BossDamage
|
||
end
|
||
else
|
||
self._PhaseDeduct.Type = AnimationPhase.Phase3
|
||
self.TxtJiaCheng02.gameObject:SetActiveEx(false)
|
||
end
|
||
|
||
elseif self._PhaseDeduct.Type == AnimationPhase.Phase3 then
|
||
-- 友伤扣减
|
||
if data.TeammateDamage ~= 0 then
|
||
if self._PhaseDeduct.Time == 0 then
|
||
self.TxtJiaCheng02.text = XUiHelper.GetText("SpecialTrainBreakthroughSettleDesc4", math.abs(data.TeammateDamage))
|
||
self.TxtJiaCheng02.gameObject:SetActiveEx(true)
|
||
end
|
||
self._PhaseDeduct.Time = self._PhaseDeduct.Time + deltaTime
|
||
if self._PhaseDeduct.Time > self._PhaseDeduct.ScrollTime then
|
||
self._PhaseDeduct.Type = AnimationPhase.Phase4
|
||
self._PhaseDeduct.Time = 0
|
||
self.TxtJiaCheng02.gameObject:SetActiveEx(false)
|
||
end
|
||
else
|
||
self._PhaseDeduct.Type = AnimationPhase.Phase4
|
||
end
|
||
|
||
elseif self._PhaseDeduct.Type == AnimationPhase.Phase4 then
|
||
self._PhaseDeduct.Type = AnimationPhase.PhaseEnd
|
||
self.TxtTeammateDamage.text = data.BossDamage + data.TeammateDamage
|
||
end
|
||
--endregion 伤害扣减
|
||
|
||
--region 个人总积分
|
||
if self._PhaseScoreTotal.Type == AnimationPhase.Phase1 then
|
||
self.TxtScore.gameObject:SetActiveEx(false)
|
||
self.TxtJiaCheng01.gameObject:SetActiveEx(false)
|
||
self._PhaseScoreTotal.Type = AnimationPhase.Phase2
|
||
|
||
elseif self._PhaseScoreTotal.Type == AnimationPhase.Phase2 then
|
||
-- 等待 基础积分和伤害扣减
|
||
if isEndPersonalScoreAndDeduct
|
||
and self._PhaseScore.Type == AnimationPhase.PhaseEnd
|
||
and self._PhaseDeduct.Type == AnimationPhase.PhaseEnd then
|
||
self._PhaseScoreTotal.Type = AnimationPhase.Phase3
|
||
self.TxtScore.text = data.RoundSummation
|
||
end
|
||
|
||
elseif self._PhaseScoreTotal.Type == AnimationPhase.Phase3 then
|
||
-- 剩余轮次加成
|
||
if data.RemainRoundAddition > 0 then
|
||
if self._PhaseScoreTotal.Time == 0 then
|
||
self.TxtJiaCheng01.text = XUiHelper.GetText("SpecialTrainBreakthroughSettleDesc1", data.RemainRoundAddition)
|
||
self.TxtJiaCheng01.gameObject:SetActiveEx(true)
|
||
self.TxtScore.gameObject:SetActiveEx(true)
|
||
end
|
||
self._PhaseScoreTotal.Time = self._PhaseScoreTotal.Time + deltaTime
|
||
if self._PhaseScoreTotal.Time > self._PhaseScoreTotal.ScrollTime then
|
||
self._PhaseScoreTotal.Type = AnimationPhase.Phase4
|
||
self._PhaseScoreTotal.Time = 0
|
||
self.TxtJiaCheng01.gameObject:SetActiveEx(false)
|
||
end
|
||
else
|
||
self.TxtScore.gameObject:SetActiveEx(true)
|
||
self.TxtJiaCheng01.gameObject:SetActiveEx(false)
|
||
self._PhaseScoreTotal.Type = AnimationPhase.Phase4
|
||
end
|
||
|
||
elseif self._PhaseScoreTotal.Type == AnimationPhase.Phase4 then
|
||
self._PhaseScoreTotal.Type = AnimationPhase.PhaseEnd
|
||
self.TxtScore.text = data.RoundSummation + data.RemainRoundAddition
|
||
self.TxtJiaCheng01.gameObject:SetActiveEx(false)
|
||
end
|
||
--endregion 个人总积分
|
||
|
||
return self._PhaseScoreTotal.Type == AnimationPhase.PhaseEnd
|
||
end
|
||
|
||
return XUiSpecialTrainBreakthroughSettleGrid |