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

67 lines
2.4 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---@class WB_DistanceDefenseLine_C:UUserWidget
---@field Image_Player1 UImage
---@field Image_Player2 UImage
---@field Image_Player3 UImage
---@field TextBlock_BreakThrough UTextBlock
--Edit Below--
local WB_DistanceDefenseLine = {
bInitDoOnce = false;
Range = 50;
WidgetRange = 400
};
--function WB_DistanceDefenseLine:Construct()
--
--end
-- 这个UI大概率不会二次利用就不抽象了耦合度挺高的
function WB_DistanceDefenseLine:Init()
WidgetLibrary.TextBlockBindingPropertyText(self.TextBlock_BreakThrough, self.UpdateBreakThrough, self)
UGCEventSystem.SetTimerLoop(self, self.UpdatePlayerDis, 0.05)
self.PlayerMoveWidget = {self.Image_Player1, self.Image_Player2, self.Image_Player3}
end
function WB_DistanceDefenseLine:UpdateBreakThrough()
return UGCGameSystem.GameState.BreakThroughNum .. "/" .. UGCGameSystem.GameState.MaxBreakThroughNum
end
function WB_DistanceDefenseLine:UpdatePlayerDis()
local DefenderIndex = UGCGameSystem.GameState.DefenderIndex
local AllDefender = UGCGameSystem.GameState.AllDefender
local Index = 0
local LineOfDefense = PlacementModeConfig.GetSimpleLineOfDefense()
if UE.IsValid(LineOfDefense) then
local LineOfDefensePos = LineOfDefense:K2_GetActorLocation()
for i = 1, 4 do
local PlayerKey = AllDefender[i]
if i ~= DefenderIndex then
local Pawn = UGCGameSystem.GetPlayerPawnByPlayerKey(PlayerKey)
Index = Index + 1
if Index <= #self.PlayerMoveWidget then
if UE.IsValid(Pawn) then
local Length = VectorHelper.Length2D(VectorHelper.Sub2D(Pawn:K2_GetActorLocation(), LineOfDefensePos)) / 100
Length = math.clamp(Length, 0, self.Range)
self.PlayerMoveWidget[Index]:SetRenderTranslation({X = (1 - Length / self.Range) * self.WidgetRange, Y = 0})
self.PlayerMoveWidget[Index]:SetVisibility(ESlateVisibility.HitTestInvisible)
else
self.PlayerMoveWidget[Index]:SetVisibility(ESlateVisibility.Collapsed)
end
end
end
end
end
end
-- function WB_DistanceDefenseLine:Tick(MyGeometry, InDeltaTime)
-- end
-- function WB_DistanceDefenseLine:Destruct()
-- end
return WB_DistanceDefenseLine;