mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Fixed but with distance when player was nearby.
Detection used PlayerUnitName, instead of Distance. Added new FriendliesDistance field. This is a better solution.
This commit is contained in:
parent
ee30fa6ac2
commit
caad080c6c
@ -794,7 +794,7 @@ do -- AI_A2A_DISPATCHER
|
|||||||
-- @return #number, Core.CommandCenter#REPORT
|
-- @return #number, Core.CommandCenter#REPORT
|
||||||
function AI_A2A_DISPATCHER:GetAIFriendliesNearBy( DetectedItem )
|
function AI_A2A_DISPATCHER:GetAIFriendliesNearBy( DetectedItem )
|
||||||
|
|
||||||
local FriendliesNearBy = self.Detection:GetFriendliesNearBy( DetectedItem )
|
local FriendliesNearBy = self.Detection:GetFriendliesDistance( DetectedItem )
|
||||||
|
|
||||||
return FriendliesNearBy
|
return FriendliesNearBy
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1120,6 +1120,14 @@ do -- DETECTION_BASE
|
|||||||
return DetectedItem.FriendliesNearBy
|
return DetectedItem.FriendliesNearBy
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Returns friendly units nearby the FAC units sorted per distance ...
|
||||||
|
-- @param #DETECTION_BASE self
|
||||||
|
-- @return #map<#number,Wrapper.Unit#UNIT> The map of Friendly UNITs.
|
||||||
|
function DETECTION_BASE:GetFriendliesDistance( DetectedItem )
|
||||||
|
|
||||||
|
return DetectedItem.FriendliesDistance
|
||||||
|
end
|
||||||
|
|
||||||
--- Returns if there are friendlies nearby the FAC units ...
|
--- Returns if there are friendlies nearby the FAC units ...
|
||||||
-- @param #DETECTION_BASE self
|
-- @param #DETECTION_BASE self
|
||||||
-- @return #boolean trhe if there are friendlies nearby
|
-- @return #boolean trhe if there are friendlies nearby
|
||||||
@ -1183,8 +1191,11 @@ do -- DETECTION_BASE
|
|||||||
if FoundUnitCoalition ~= EnemyCoalition and FoundUnitInReportSetGroup == false then
|
if FoundUnitCoalition ~= EnemyCoalition and FoundUnitInReportSetGroup == false then
|
||||||
DetectedItem.FriendliesNearBy = DetectedItem.FriendliesNearBy or {}
|
DetectedItem.FriendliesNearBy = DetectedItem.FriendliesNearBy or {}
|
||||||
local FriendlyUnit = UNIT:Find( FoundDCSUnit )
|
local FriendlyUnit = UNIT:Find( FoundDCSUnit )
|
||||||
|
local FriendlyUnitName = FriendlyUnit:GetName()
|
||||||
|
DetectedItem.FriendliesNearBy[FriendlyUnitName] = FriendlyUnit
|
||||||
local Distance = CenterCoord:Get2DDistance( FriendlyUnit:GetCoordinate() )
|
local Distance = CenterCoord:Get2DDistance( FriendlyUnit:GetCoordinate() )
|
||||||
DetectedItem.FriendliesNearBy[Distance] = FriendlyUnit
|
DetectedItem.FriendliesDistance = DetectedItem.FriendliesDistance or {}
|
||||||
|
DetectedItem.FriendliesDistance[Distance] = FriendlyUnit
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1200,13 +1211,22 @@ do -- DETECTION_BASE
|
|||||||
--- @param Wrapper.Unit#UNIT PlayerUnit
|
--- @param Wrapper.Unit#UNIT PlayerUnit
|
||||||
function( PlayerUnitName )
|
function( PlayerUnitName )
|
||||||
local PlayerUnit = UNIT:FindByName( PlayerUnitName )
|
local PlayerUnit = UNIT:FindByName( PlayerUnitName )
|
||||||
|
|
||||||
if PlayerUnit and PlayerUnit:IsInZone(DetectionZone) then
|
if PlayerUnit and PlayerUnit:IsInZone(DetectionZone) then
|
||||||
|
|
||||||
DetectedItem.FriendliesNearBy = DetectedItem.FriendliesNearBy or {}
|
DetectedItem.FriendliesNearBy = DetectedItem.FriendliesNearBy or {}
|
||||||
local PlayerUnitName = PlayerUnit:GetName()
|
local PlayerUnitName = PlayerUnit:GetName()
|
||||||
|
|
||||||
DetectedItem.PlayersNearBy = DetectedItem.PlayersNearBy or {}
|
DetectedItem.PlayersNearBy = DetectedItem.PlayersNearBy or {}
|
||||||
DetectedItem.PlayersNearBy[PlayerUnitName] = PlayerUnit
|
DetectedItem.PlayersNearBy[PlayerUnitName] = PlayerUnit
|
||||||
|
|
||||||
DetectedItem.FriendliesNearBy = DetectedItem.FriendliesNearBy or {}
|
DetectedItem.FriendliesNearBy = DetectedItem.FriendliesNearBy or {}
|
||||||
DetectedItem.FriendliesNearBy[PlayerUnitName] = PlayerUnit
|
DetectedItem.FriendliesNearBy[PlayerUnitName] = PlayerUnit
|
||||||
|
|
||||||
|
local CenterCoord = DetectedUnit:GetCoordinate()
|
||||||
|
local Distance = CenterCoord:Get2DDistance( PlayerUnit:GetCoordinate() )
|
||||||
|
DetectedItem.FriendliesDistance = DetectedItem.FriendliesDistance or {}
|
||||||
|
DetectedItem.FriendliesDistance[Distance] = PlayerUnit
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user