---@class WBP_PlayerInfo_C:UUserWidget ---@field ProgressBar_Energy UProgressBar ---@field ProgressBar_Exp UProgressBar ---@field ProgressBar_Health UProgressBar ---@field TextBlock_Health UTextBlock --Edit Below-- local WBP_PlayerInfo = { bInitDoOnce = false; }; function WBP_PlayerInfo:Construct() self.SuperClass:Construct() local OwningPawn = GameDataManager.GetLocalPlayerController():GetPlayerCharacterSafety() self.PlayerKey = GameDataManager.GetLocalPlayerController().PlayerKey self:OnHealthChanged(self.PlayerKey, UGCPawnAttrSystem.GetHealth(OwningPawn), UGCPawnAttrSystem.GetHealth(OwningPawn), 0) self:OnEnergyChanged(self.PlayerKey, OwningPawn.EnergyData.Cur, OwningPawn.EnergyData.Max) self:OnExpChanged(UGCGameSystem.GameState:GetAllPlayerExp()) EventSystem:AddListener(EventType.OnPlayerExpChanged, WBP_PlayerInfo.OnExpChanged, self) EventSystem:AddListener(EventType.OnPlayerHPChanged, WBP_PlayerInfo.OnHealthChanged, self) EventSystem:AddListener(EventType.OnPlayerEnergyChanged, WBP_PlayerInfo.OnEnergyChanged, self) end -- function WBP_PlayerInfo:Tick(MyGeometry, InDeltaTime) -- end function WBP_PlayerInfo:Destruct() EventSystem:RemoveListener(EventType.OnPlayerExpChanged, WBP_PlayerInfo.OnExpChanged, self) EventSystem:RemoveListener(EventType.OnPlayerHPChanged, WBP_PlayerInfo.OnHealthChanged, self) EventSystem:RemoveListener(EventType.OnPlayerEnergyChanged, WBP_PlayerInfo.OnEnergyChanged, self) end function WBP_PlayerInfo:OnExpChanged(PlayerAllExp) for PlayerKey, ExpInfo in pairs(PlayerAllExp) do if self.PlayerKey == PlayerKey then self.ProgressBar_Exp:SetVisibility(ESlateVisibility.SelfHitTestInvisible) self.ProgressBar_Exp:SetPercent(ExpInfo.CurExp / ExpInfo.TotalExp) return end end self.ProgressBar_Exp:SetVisibility(ESlateVisibility.Collapsed) end function WBP_PlayerInfo:OnHealthChanged(InPlayerKey, CurHP, MaxHP, PrevHP) if self.PlayerKey == InPlayerKey then self.ProgressBar_Health:SetPercent(CurHP / MaxHP) self.TextBlock_Health:SetText(string.format('%d / %d', math.floor(CurHP), math.floor(MaxHP))) end end function WBP_PlayerInfo:OnEnergyChanged(InPlayerKey, CurEnergy, MaxEnergy) if self.PlayerKey == InPlayerKey then self.ProgressBar_Energy:SetPercent(CurEnergy / MaxEnergy) end end return WBP_PlayerInfo;