87 lines
3.1 KiB
Lua
Raw Normal View History

2025-01-04 23:00:19 +08:00
---@class W_ShowTriggerDeviceInfo_C:UUserWidget
---@field Image_1 UImage
---@field Image_2 UImage
---@field Image_4 UImage
---@field Image_5 UImage
---@field Image_CT UImage
---@field Image_T UImage
---@field ProgressBar_ShowEnergy UProgressBar
---@field TextBlock_HealthValue UTextBlock
---@field TextBlock_Limit UTextBlock
---@field TextBlock_Max UTextBlock
---@field TextBlock_PlayerName UTextBlock
---@field WidgetSwitcher_Active UWidgetSwitcher
---@field WidgetSwitcher_TeamIcon UWidgetSwitcher
--Edit Below--
---@type W_ShowTriggerDeviceInfo_C
local W_ShowTriggerDeviceInfo = {
bInitDoOnce = false;
MaxEnergy = 0.;
};
--[==[ Construct
function W_ShowTriggerDeviceInfo:Construct()
end
-- Construct ]==]
-- function W_ShowTriggerDeviceInfo:Tick(MyGeometry, InDeltaTime)
-- end
-- function W_ShowTriggerDeviceInfo:Destruct()
-- end
function W_ShowTriggerDeviceInfo:InitMechanismInfo(InMaxEnergy, InLimitEnergy)
self.MaxEnergy = InMaxEnergy
self.TextBlock_Limit:SetText(string.format("%.0f", InLimitEnergy))
self.TextBlock_Max:SetText(string.format("%.0f", InMaxEnergy))
-- 设置两图标颜色
self.Image_CT:SetColorAndOpacity(TeamConfig.TeamColor[TeamConfig.TeamType.CT])
self.Image_T:SetColorAndOpacity(TeamConfig.TeamColor[TeamConfig.TeamType.T])
end
function W_ShowTriggerDeviceInfo:Trigger(PlayerKey, InEnergy)
self:UpdateTriggeredPlayerInfo(PlayerKey)
self:UpdateEnergyInfo(InEnergy)
self.WidgetSwitcher_Active:SetActiveWidgetIndex(0)
UGCLogSystem.Log("[W_ShowTriggerDeviceInfo_Trigger]")
end
function W_ShowTriggerDeviceInfo:MechanismClosed()
self.WidgetSwitcher_Active:SetActiveWidgetIndex(1)
UGCLogSystem.Log("[W_ShowTriggerDeviceInfo_MechanismClosed]")
end
function W_ShowTriggerDeviceInfo:UpdateTriggeredPlayerInfo(PlayerKey)
if PlayerKey < 0 then
self.WidgetSwitcher_Active:SetActiveWidgetIndex(1)
return
end
local PlayerName = UGCGameSystem.GameState:GetPlayerNameByPlayerKey(PlayerKey)
self.TextBlock_PlayerName:SetText(PlayerName)
local PlayerTeamID = UGCGameSystem.GameState:GetPlayerTeamIDByPlayerKey(PlayerKey)
local TeamColor = TeamConfig.TeamColor[PlayerTeamID]
if TeamColor then
self.ProgressBar_ShowEnergy:SetFillColorAndOpacity(TeamColor)
self.TextBlock_PlayerName:SetColorAndOpacity({SpecifiedColor = TeamColor, ColorUseRule=0})
UGCLogSystem.Log("[W_ShowTriggerDeviceInfo_UpdateTriggeredPlayerInfo] Succeed, PlayerKey:%s", tostring(PlayerKey))
-- 设置队伍图标
self.WidgetSwitcher_TeamIcon:SetActiveWidgetIndex(PlayerTeamID - 1)
else
UGCLogSystem.LogError("[W_ShowTriggerDeviceInfo_UpdateTriggeredPlayerInfo] TeamConfig.TeamColor[%s] is nil, PlayerKey:%s", tostring(PlayerTeamID), tostring(PlayerKey))
end
self.WidgetSwitcher_Active:SetActiveWidgetIndex(0)
end
function W_ShowTriggerDeviceInfo:UpdateEnergyInfo(InEnergy)
self.ProgressBar_ShowEnergy:SetPercent(InEnergy / self.MaxEnergy)
self.TextBlock_HealthValue:SetText(string.format("%.0f / %.0f", InEnergy, self.MaxEnergy))
end
return W_ShowTriggerDeviceInfo;