91 lines
4.2 KiB
Lua
Raw Normal View History

2025-01-04 23:00:19 +08:00
---@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