From b9ad5b5ba764facfd08788a8e1ca92a3bfecef63 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Fri, 21 Feb 2025 10:42:43 +0100 Subject: [PATCH] #TARGET - add threat level determination for ZONE and OPSZONE --- Moose Development/Moose/Ops/OpsZone.lua | 2 ++ Moose Development/Moose/Ops/Target.lua | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Moose Development/Moose/Ops/OpsZone.lua b/Moose Development/Moose/Ops/OpsZone.lua index 12c4b4608..bbcf4f97b 100644 --- a/Moose Development/Moose/Ops/OpsZone.lua +++ b/Moose Development/Moose/Ops/OpsZone.lua @@ -723,6 +723,7 @@ end -- @param #string From From state. -- @param #string Event Event. -- @param #string To To state. +-- @return #OPSZONE self function OPSZONE:onafterStart(From, Event, To) -- Info. @@ -739,6 +740,7 @@ function OPSZONE:onafterStart(From, Event, To) self:HandleEvent(EVENTS.BaseCaptured) end + return self end --- Stop OPSZONE FSM. diff --git a/Moose Development/Moose/Ops/Target.lua b/Moose Development/Moose/Ops/Target.lua index e0b750679..fcc108087 100644 --- a/Moose Development/Moose/Ops/Target.lua +++ b/Moose Development/Moose/Ops/Target.lua @@ -387,6 +387,8 @@ function TARGET:AddObject(Object) if Object:IsInstanceOf("OPSGROUP") then self:_AddObject(Object:GetGroup()) -- We add the MOOSE GROUP object not the OPSGROUP object. + --elseif Object:IsInstanceOf("OPSZONE") then + --self:_AddObject(Object:GetZone()) else self:_AddObject(Object) end @@ -1296,11 +1298,27 @@ function TARGET:GetTargetThreatLevelMax(Target) return 0 elseif Target.Type==TARGET.ObjectType.ZONE then + + local zone = Target.Object -- Core.Zone#ZONE_RADIUS + local foundunits = {} + if zone:IsInstanceOf("ZONE_RADIUS") or zone:IsInstanceOf("ZONE_POLYGON") then + zone:Scan({Object.Category.UNIT},{Unit.Category.GROUND_UNIT,Unit.Category.SHIP}) + foundunits = zone:GetScannedSetUnit() + else + foundunits = SET_UNIT:New():FilterZones({zone}):FilterOnce() + end + local ThreatMax = foundunits:GetThreatLevelMax() or 0 + return ThreatMax - return 0 + elseif Target.Type==TARGET.ObjectType.OPSZONE then + + local unitset = Target.Object:GetScannedUnitSet() -- Core.Set#SET_UNIT + local ThreatMax = unitset:GetThreatLevelMax() + return ThreatMax else self:E("ERROR: unknown target object type in GetTargetThreatLevel!") + return 0 end return self