127 lines
5.1 KiB
Lua
127 lines
5.1 KiB
Lua
---@class W_ShowTriggerDeviceInfo_2_C:ObjectPositionWidget
|
|
---@field Image_6 UImage
|
|
---@field Image_CT UImage
|
|
---@field Image_MechanismIcon UImage
|
|
---@field Image_Ring UImage
|
|
---@field Image_T UImage
|
|
---@field Overlay_CanActive UOverlay
|
|
---@field ProgressBar_ShowEnergy UProgressBar
|
|
---@field TextBlock_4 UTextBlock
|
|
---@field TextBlock_HealthValue UTextBlock
|
|
---@field TextBlock_Name UTextBlock
|
|
---@field TextBlock_PlayerName UTextBlock
|
|
---@field TextBlock_Range UTextBlock
|
|
---@field WidgetSwitcher_Active UWidgetSwitcher
|
|
---@field WidgetSwitcher_CanActive UWidgetSwitcher
|
|
---@field WidgetSwitcher_Show UWidgetSwitcher
|
|
---@field WidgetSwitcher_TeamIcon UWidgetSwitcher
|
|
--Edit Below--
|
|
---@type W_ShowTriggerDeviceInfo_2_C
|
|
local W_ShowTriggerDeviceInfo_2 = {
|
|
bInitDoOnce = false;
|
|
MaxEnergy = 0.;
|
|
LimitEnergy = 0.;
|
|
LocalCanActive = false;
|
|
};
|
|
|
|
--[==[ Construct
|
|
function W_ShowTriggerDeviceInfo:Construct()
|
|
|
|
end
|
|
-- Construct ]==]
|
|
|
|
-- function W_ShowTriggerDeviceInfo:Tick(MyGeometry, InDeltaTime)
|
|
|
|
-- end
|
|
|
|
-- function W_ShowTriggerDeviceInfo:Destruct()
|
|
|
|
-- end
|
|
|
|
function W_ShowTriggerDeviceInfo_2:InitMechanismInfo(InMaxEnergy, InLimitEnergy, MechanismType)
|
|
local MechanismName = MechanismConfig.MechanismTypeName[MechanismType]
|
|
self.LimitEnergy = InLimitEnergy
|
|
self.TextBlock_Limit:SetText(string.format("%.0f", InLimitEnergy))
|
|
self.TextBlock_Max:SetText(string.format("%.0f", InMaxEnergy))
|
|
self.TextBlock_Range:SetText(string.format("[ %.0f, %.0f ]", InLimitEnergy, InMaxEnergy))
|
|
self.TextBlock_Name:SetText(tostring(MechanismName))
|
|
-- self.LoopSetCanActive = UGCEventSystem.SetTimerLoop(self, self.CheckCanActive, 0.2)
|
|
-- 设置两图标颜色
|
|
self.Image_CT:SetColorAndOpacity(TeamConfig.TeamColor[TeamConfig.TeamType.CT])
|
|
self.Image_T:SetColorAndOpacity(TeamConfig.TeamColor[TeamConfig.TeamType.T])
|
|
end
|
|
|
|
--function W_ShowTriggerDeviceInfo_2:CheckCanActive()
|
|
-- local LocalPawn = UGCSystemLibrary.GetLocalPlayerPawn()
|
|
-- if LocalPawn then
|
|
-- if self.LocalCanActive == false and LocalPawn:GetMechanismEnergy() >= self.LimitEnergy then
|
|
-- self.LocalCanActive = true
|
|
-- self.Overlay_CanActive:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
|
-- self.WidgetSwitcher_CanActive:SetActiveWidgetIndex(1)
|
|
-- elseif self.LocalCanActive == true and LocalPawn:GetMechanismEnergy() < self.LimitEnergy then
|
|
-- self.LocalCanActive = false
|
|
-- self.Overlay_CanActive:SetVisibility(ESlateVisibility.Collapsed)
|
|
-- self.WidgetSwitcher_CanActive:SetActiveWidgetIndex(0)
|
|
-- end
|
|
-- end
|
|
--end
|
|
|
|
function W_ShowTriggerDeviceInfo_2:CanActive(bActive)
|
|
if self.LocalCanActive ~= bActive then
|
|
self.LocalCanActive = bActive
|
|
if bActive then
|
|
self.Overlay_CanActive:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
|
self.WidgetSwitcher_CanActive:SetActiveWidgetIndex(1)
|
|
else
|
|
self.Overlay_CanActive:SetVisibility(ESlateVisibility.Collapsed)
|
|
self.WidgetSwitcher_CanActive:SetActiveWidgetIndex(0)
|
|
end
|
|
end
|
|
end
|
|
|
|
function W_ShowTriggerDeviceInfo_2:Trigger(PlayerKey, InEnergy, InMaxEnergy)
|
|
self:UpdateTriggeredPlayerInfo(PlayerKey)
|
|
self:UpdateEnergyInfo(InEnergy, InMaxEnergy)
|
|
self.WidgetSwitcher_Active:SetActiveWidgetIndex(0)
|
|
UGCLogSystem.Log("[W_ShowTriggerDeviceInfo_2_Trigger]")
|
|
end
|
|
|
|
function W_ShowTriggerDeviceInfo_2:MechanismClosed()
|
|
self.WidgetSwitcher_Active:SetActiveWidgetIndex(1)
|
|
UGCLogSystem.Log("[W_ShowTriggerDeviceInfo_2_MechanismClosed]")
|
|
end
|
|
|
|
function W_ShowTriggerDeviceInfo_2: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 LocalPlayerTeamID = UGCGameSystem.GameState:GetPlayerTeamIDByPlayerKey(UGCSystemLibrary.GetLocalPlayerKey())
|
|
|
|
local ShowTeamType = PlayerTeamID == LocalPlayerTeamID and TeamConfig.TeamType.CT or TeamConfig.TeamType.T
|
|
|
|
local TeamColor = TeamConfig.TeamColor[ShowTeamType]
|
|
if TeamColor then
|
|
self.ProgressBar_ShowEnergy:SetFillColorAndOpacity(TeamColor)
|
|
self.TextBlock_PlayerName:SetColorAndOpacity({SpecifiedColor = TeamColor, ColorUseRule=0})
|
|
UGCLogSystem.Log("[W_ShowTriggerDeviceInfo_2_UpdateTriggeredPlayerInfo] Succeed, PlayerKey:%s", tostring(PlayerKey))
|
|
-- 设置队伍图标
|
|
self.WidgetSwitcher_TeamIcon:SetActiveWidgetIndex(ShowTeamType - 1)
|
|
else
|
|
UGCLogSystem.LogError("[W_ShowTriggerDeviceInfo_2_UpdateTriggeredPlayerInfo] TeamConfig.TeamColor[%s] is nil, PlayerKey:%s", tostring(ShowTeamType), tostring(PlayerKey))
|
|
end
|
|
|
|
self.WidgetSwitcher_Active:SetActiveWidgetIndex(0)
|
|
end
|
|
|
|
function W_ShowTriggerDeviceInfo_2:UpdateEnergyInfo(InEnergy, InMaxEnergy)
|
|
self.ProgressBar_ShowEnergy:SetPercent(InEnergy / InMaxEnergy)
|
|
self.TextBlock_HealthValue:SetText(string.format("%.0f / %.0f", InEnergy, InMaxEnergy))
|
|
end
|
|
|
|
return W_ShowTriggerDeviceInfo_2; |