59 lines
2.2 KiB
Lua
59 lines
2.2 KiB
Lua
---@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; |