2025-01-04 23:00:19 +08:00

123 lines
4.9 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 TeamColor = TeamConfig.TeamColor[PlayerTeamID]
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(PlayerTeamID - 1)
else
UGCLogSystem.LogError("[W_ShowTriggerDeviceInfo_2_UpdateTriggeredPlayerInfo] TeamConfig.TeamColor[%s] is nil, PlayerKey:%s", tostring(PlayerTeamID), 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;