---@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;