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