From 09fd4d25b70cab5286be51486d84202624d791ef Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 16 Feb 2026 22:25:59 +0100 Subject: [PATCH] AUFTRAG - Added check for cargo in zone --- Moose Development/Moose/Core/Set.lua | 22 ++++++++++++++++++++++ Moose Development/Moose/Ops/Auftrag.lua | 22 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/Moose Development/Moose/Core/Set.lua b/Moose Development/Moose/Core/Set.lua index 0d567c472..b3e4f82cf 100644 --- a/Moose Development/Moose/Core/Set.lua +++ b/Moose Development/Moose/Core/Set.lua @@ -979,6 +979,28 @@ do -- SET_BASE return ObjectNames end + + --- Checks whether all or optionally any objects is inside a given zone. + -- @param #SET_BASE self + -- @param Core.Zone#ZONE Zone The zone. + -- @param #boolean Any If `true`, at least one object has to be inside the zone. If `false` or `nil`, all objects need to be in the zone. + -- @return #boolean Retruns `true` if objects are in the zone and `false` otherwise. + function SET_BASE:IsInZone(Zone, Any) + + for ObjectName, Object in pairs(self.Set) do + local object=Object --Wrapper.Positionable#POSITIONABLE + local inzone=object:IsInZone(Zone) + if inzone and Any then + -- We want at least one and this one is + return true + elseif not inzone then + -- We want all but at least one is not + return false + end + end + + return true + end --- Flushes the current SET_BASE contents in the log ... (for debugging reasons). -- @param #SET_BASE self diff --git a/Moose Development/Moose/Ops/Auftrag.lua b/Moose Development/Moose/Ops/Auftrag.lua index f219083b2..0ff182dd2 100644 --- a/Moose Development/Moose/Ops/Auftrag.lua +++ b/Moose Development/Moose/Ops/Auftrag.lua @@ -4227,6 +4227,28 @@ function AUFTRAG:IsReadyToGo() if not startme then return false end + + if self.type==AUFTRAG.Type.FREIGHTTRANSPORT then + + local cargoset=self.DCStask.params.cargo --Core.Set#SET_STATIC + + for _,_opsgroup in pairs(self:GetOpsGroups()) do + local opsgroup=_opsgroup --Ops.OpsGroup#OPSGROUP + + local vec2=opsgroup.group:GetFirstUnitAlive():GetVec2() + + local zone=ZONE_RADIUS:New("Bla", vec2, 40, true) + + local inzone=cargoset:IsInZone(zone) + + if not inzone then + printf("FF cargo is not inside zone") + return false + end + + end + + end -- We're good to go!