---@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 --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