91 lines
4.2 KiB
Lua
91 lines
4.2 KiB
Lua
---@class BP_TeamDamage_C:UUserWidget
|
|
---@field DX_UpgradeSkills UWidgetAnimation
|
|
---@field DX_UpgradeSkills_old UWidgetAnimation
|
|
---@field DX_RefreshSkill UWidgetAnimation
|
|
---@field Border_SkillSlot UBorder
|
|
---@field CanvasPanel_tips UCanvasPanel
|
|
---@field CustomizeCanvasPanel_BP_C_0 UCustomizeCanvasPanel_BP_C
|
|
---@field Image_0 UImage
|
|
---@field Image_BG UImage
|
|
---@field Image_Icon UImage
|
|
---@field ProgressBar_Enemy UProgressBar
|
|
---@field ProgressBar_Energy UProgressBar
|
|
---@field ProgressBar_SelfTeam UProgressBar
|
|
---@field TextBlock_BuffName UTextBlock
|
|
---@field TextBlock_Enemy UTextBlock
|
|
---@field TextBlock_SelfTeam UTextBlock
|
|
---@field TextBlock_Tip UTextBlock
|
|
---@field WidgetSwitcher_EnergyStorage UWidgetSwitcher
|
|
---@field FunctionBPParam TMap:FString,TEnumAsByte<SkillIconTemplate_Func_BP_Base_C_PropertyEnum>
|
|
--Edit Below--
|
|
local BP_TeamDamage = {
|
|
bInitDoOnce = false;
|
|
UpdateFrequency = 2.2;
|
|
IsActive = false;
|
|
NowBuffType = -1;
|
|
LocalTeamID = 1;
|
|
OtherTeamID = 2;
|
|
}
|
|
function BP_TeamDamage:Construct()
|
|
UGCEventSystem.SetTimerLoop(self, self.UpdateShowInfo, 1. / self.UpdateFrequency)
|
|
UGCEventSystem.AddListener(EventEnum.PlayerTeamChange, self.UpdateTeam)
|
|
local LocalPC = UGCSystemLibrary.GetLocalPlayerController()
|
|
self:UpdateTeam(LocalPC, UGCPlayerControllerSystem.GetTeamID(LocalPC))
|
|
-- 初始化面板信息
|
|
self.WidgetSwitcher_EnergyStorage:SetActiveWidgetIndex(1)
|
|
self.ProgressBar_Energy:SetPercent(0)
|
|
self.TextBlock_Tip:SetText("击破能量球方获得".. ProjectConfig.EnergyBallActivationTimeInterval .. "s增益")
|
|
end
|
|
function BP_TeamDamage:UpdateTeam(PC, TeamID)
|
|
if PC == UGCSystemLibrary.GetLocalPlayerController() then
|
|
self.LocalTeamID = TeamID
|
|
self.OtherTeamID = (TeamID == 1) and 2 or 1
|
|
end
|
|
end
|
|
function BP_TeamDamage:GetEnergyBallObj()
|
|
if not UE.IsValid(self.EnergyBallObj) then
|
|
self.EnergyBallObj = UGCSystemLibrary.GetUniqueInstanceFromPath(UGCGameSystem.GetUGCResourcesFullPath('Asset/Blueprint/SceneActor/BuffEnergyActor/BP_BuffEnergyActor.BP_BuffEnergyActor_C'))
|
|
end
|
|
return self.EnergyBallObj
|
|
end
|
|
function BP_TeamDamage:UpdateShowInfo()
|
|
self:GetEnergyBallObj()
|
|
if not UE.IsValid(self.EnergyBallObj) then return end
|
|
local TempIsActive = self.EnergyBallObj:GetIsActive()
|
|
self.IsActive = TempIsActive
|
|
if self.IsActive then
|
|
self.WidgetSwitcher_EnergyStorage:SetActiveWidgetIndex(0)
|
|
local TempNowBuffType = self.EnergyBallObj:GetNowBuffType()
|
|
local LocalTeamDamage = self.EnergyBallObj:GetTeamDamage(self.LocalTeamID)
|
|
local OtherTeamDamage = self.EnergyBallObj:GetTeamDamage(self.OtherTeamID)
|
|
self.ProgressBar_SelfTeam:SetPercent(LocalTeamDamage / ProjectConfig.ActiveBallNeedDamage)
|
|
self.ProgressBar_Enemy:SetPercent(OtherTeamDamage / ProjectConfig.ActiveBallNeedDamage)
|
|
self.TextBlock_SelfTeam:SetText(math.floor(LocalTeamDamage) .. "/" .. ProjectConfig.ActiveBallNeedDamage)
|
|
self.TextBlock_Enemy:SetText(math.floor(OtherTeamDamage) .. "/" .. ProjectConfig.ActiveBallNeedDamage)
|
|
self:UpdateBuff(TempNowBuffType)
|
|
else
|
|
self.WidgetSwitcher_EnergyStorage:SetActiveWidgetIndex(1)
|
|
local StartTime = self.EnergyBallObj:GetEnergyStorageStartTime()
|
|
local ServerGameTime = UGCGameSystem.GameState:GetServerGameTime()
|
|
self.ProgressBar_Energy:SetPercent((ServerGameTime - StartTime) / ProjectConfig.EnergyBallActivationTimeInterval)
|
|
end
|
|
end
|
|
function BP_TeamDamage:UpdateBuff(InBuffType)
|
|
-- UGCLogSystem.Log("[BP_TeamDamage_UpdateBuff] InBuffType:%s", tostring(InBuffType))
|
|
if InBuffType ~= self.NowBuffType then
|
|
self.NowBuffType = InBuffType
|
|
-- 刷新图片等UI信息
|
|
UGCSystemLibrary.AsyncLoadAsset(GodOfWarConfig.IncreaseIcon[self.NowBuffType],
|
|
function(Tex)
|
|
self.Image_Icon:SetBrushFromTexture(Tex, false)
|
|
self:PlayAnimation(self.DX_UpgradeSkills, 0, 1, EUMGSequencePlayMode.Forward, 1.0)
|
|
end, nil, true
|
|
)
|
|
self.TextBlock_BuffName:SetText(GodOfWarConfig.IncreaseName[self.NowBuffType])
|
|
end
|
|
end
|
|
-- function BP_TeamDamage:Tick(MyGeometry, InDeltaTime)
|
|
-- end
|
|
-- function BP_TeamDamage:Destruct()
|
|
-- end
|
|
return BP_TeamDamage |