67 lines
2.4 KiB
Lua
67 lines
2.4 KiB
Lua
---@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; |