mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
OPSGROUP
- Improved CAPTUREZONE for FLIGHTGROUP
This commit is contained in:
parent
f45a22fe78
commit
1b6648996c
@ -68,7 +68,7 @@ ARMYGROUP = {
|
|||||||
|
|
||||||
--- Army Group version.
|
--- Army Group version.
|
||||||
-- @field #string version
|
-- @field #string version
|
||||||
ARMYGROUP.version="1.0.0"
|
ARMYGROUP.version="1.0.1"
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- TODO list
|
-- TODO list
|
||||||
@ -1028,10 +1028,10 @@ function ARMYGROUP:onbeforeUpdateRoute(From, Event, To, n, N, Speed, Formation)
|
|||||||
local task=self:GetTaskByID(self.taskcurrent)
|
local task=self:GetTaskByID(self.taskcurrent)
|
||||||
|
|
||||||
if task then
|
if task then
|
||||||
if task.dcstask.id=="PatrolZone" then
|
if task.dcstask.id==AUFTRAG.SpecialTask.PATROLZONE then
|
||||||
-- For patrol zone, we need to allow the update as we insert new waypoints.
|
-- For patrol zone, we need to allow the update as we insert new waypoints.
|
||||||
self:T2(self.lid.."Allowing update route for Task: PatrolZone")
|
self:T2(self.lid.."Allowing update route for Task: PatrolZone")
|
||||||
elseif task.dcstask.id=="ReconMission" then
|
elseif task.dcstask.id==AUFTRAG.SpecialTask.RECON then
|
||||||
-- For recon missions, we need to allow the update as we insert new waypoints.
|
-- For recon missions, we need to allow the update as we insert new waypoints.
|
||||||
self:T2(self.lid.."Allowing update route for Task: ReconMission")
|
self:T2(self.lid.."Allowing update route for Task: ReconMission")
|
||||||
elseif task.dcstask.id==AUFTRAG.SpecialTask.RELOCATECOHORT then
|
elseif task.dcstask.id==AUFTRAG.SpecialTask.RELOCATECOHORT then
|
||||||
|
|||||||
@ -216,7 +216,7 @@ FLIGHTGROUP.Players={}
|
|||||||
|
|
||||||
--- FLIGHTGROUP class version.
|
--- FLIGHTGROUP class version.
|
||||||
-- @field #string version
|
-- @field #string version
|
||||||
FLIGHTGROUP.version="1.0.0"
|
FLIGHTGROUP.version="1.0.1"
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- TODO list
|
-- TODO list
|
||||||
@ -1004,6 +1004,17 @@ function FLIGHTGROUP:Status()
|
|||||||
self:_SandwitchDCSTask(DCSTask, Task, false, 1)
|
self:_SandwitchDCSTask(DCSTask, Task, false, 1)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
elseif mission.type==AUFTRAG.Type.CAPTUREZONE then
|
||||||
|
|
||||||
|
-- Get task.
|
||||||
|
local Task=mission:GetGroupWaypointTask(self)
|
||||||
|
|
||||||
|
-- Update task: Engage or get new zone.
|
||||||
|
if mission:GetGroupStatus(self)==AUFTRAG.GroupStatus.EXECUTING or mission:GetGroupStatus(self)==AUFTRAG.GroupStatus.STARTED then
|
||||||
|
self:_UpdateTask(Task, mission)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2240,13 +2251,16 @@ function FLIGHTGROUP:onbeforeUpdateRoute(From, Event, To, n, N)
|
|||||||
local task=self:GetTaskByID(self.taskcurrent)
|
local task=self:GetTaskByID(self.taskcurrent)
|
||||||
|
|
||||||
if task then
|
if task then
|
||||||
if task.dcstask.id=="PatrolZone" then
|
if task.dcstask.id==AUFTRAG.SpecialTask.PATROLZONE then
|
||||||
-- For patrol zone, we need to allow the update as we insert new waypoints.
|
-- For patrol zone, we need to allow the update as we insert new waypoints.
|
||||||
self:T2(self.lid.."Allowing update route for Task: PatrolZone")
|
self:T2(self.lid.."Allowing update route for Task: PatrolZone")
|
||||||
elseif task.dcstask.id=="ReconMission" then
|
elseif task.dcstask.id==AUFTRAG.SpecialTask.CAPTUREZONE then
|
||||||
|
-- For patrol zone, we need to allow the update as we insert new waypoints.
|
||||||
|
self:T2(self.lid.."Allowing update route for Task: CaptureZone")
|
||||||
|
elseif task.dcstask.id==AUFTRAG.SpecialTask.RECON then
|
||||||
-- For recon missions, we need to allow the update as we insert new waypoints.
|
-- For recon missions, we need to allow the update as we insert new waypoints.
|
||||||
self:T2(self.lid.."Allowing update route for Task: ReconMission")
|
self:T2(self.lid.."Allowing update route for Task: ReconMission")
|
||||||
elseif task.dcstask.id=="Hover" then
|
elseif task.dcstask.id==AUFTRAG.SpecialTask.HOVER then
|
||||||
-- For recon missions, we need to allow the update as we insert new waypoints.
|
-- For recon missions, we need to allow the update as we insert new waypoints.
|
||||||
self:T2(self.lid.."Allowing update route for Task: Hover")
|
self:T2(self.lid.."Allowing update route for Task: Hover")
|
||||||
elseif task.dcstask.id==AUFTRAG.SpecialTask.RELOCATECOHORT then
|
elseif task.dcstask.id==AUFTRAG.SpecialTask.RELOCATECOHORT then
|
||||||
|
|||||||
@ -90,7 +90,7 @@ NAVYGROUP = {
|
|||||||
|
|
||||||
--- NavyGroup version.
|
--- NavyGroup version.
|
||||||
-- @field #string version
|
-- @field #string version
|
||||||
NAVYGROUP.version="1.0.0"
|
NAVYGROUP.version="1.0.1"
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- TODO list
|
-- TODO list
|
||||||
@ -783,6 +783,28 @@ function NAVYGROUP:Status(From, Event, To)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Get current mission (if any).
|
||||||
|
local mission=self:GetMissionCurrent()
|
||||||
|
|
||||||
|
-- If mission, check if DCS task needs to be updated.
|
||||||
|
if mission and mission.updateDCSTask then
|
||||||
|
|
||||||
|
if mission.type==AUFTRAG.Type.CAPTUREZONE then
|
||||||
|
|
||||||
|
-- Get task.
|
||||||
|
local Task=mission:GetGroupWaypointTask(self)
|
||||||
|
|
||||||
|
-- Update task: Engage or get new zone.
|
||||||
|
if mission:GetGroupStatus(self)==AUFTRAG.GroupStatus.EXECUTING or mission:GetGroupStatus(self)==AUFTRAG.GroupStatus.STARTED then
|
||||||
|
self:_UpdateTask(Task, mission)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
else
|
else
|
||||||
-- Check damage of elements and group.
|
-- Check damage of elements and group.
|
||||||
@ -1065,10 +1087,10 @@ function NAVYGROUP:onbeforeUpdateRoute(From, Event, To, n, Speed, Depth)
|
|||||||
local task=self:GetTaskByID(self.taskcurrent)
|
local task=self:GetTaskByID(self.taskcurrent)
|
||||||
|
|
||||||
if task then
|
if task then
|
||||||
if task.dcstask.id=="PatrolZone" then
|
if task.dcstask.id==AUFTRAG.SpecialTask.PATROLZONE then
|
||||||
-- For patrol zone, we need to allow the update as we insert new waypoints.
|
-- For patrol zone, we need to allow the update as we insert new waypoints.
|
||||||
self:T2(self.lid.."Allowing update route for Task: PatrolZone")
|
self:T2(self.lid.."Allowing update route for Task: PatrolZone")
|
||||||
elseif task.dcstask.id=="ReconMission" then
|
elseif task.dcstask.id==AUFTRAG.SpecialTask.RECON then
|
||||||
-- For recon missions, we need to allow the update as we insert new waypoints.
|
-- For recon missions, we need to allow the update as we insert new waypoints.
|
||||||
self:T2(self.lid.."Allowing update route for Task: ReconMission")
|
self:T2(self.lid.."Allowing update route for Task: ReconMission")
|
||||||
elseif task.dcstask.id==AUFTRAG.SpecialTask.RELOCATECOHORT then
|
elseif task.dcstask.id==AUFTRAG.SpecialTask.RELOCATECOHORT then
|
||||||
|
|||||||
@ -4576,8 +4576,18 @@ function OPSGROUP:_UpdateTask(Task, Mission)
|
|||||||
self:EngageTarget(targetgroup)
|
self:EngageTarget(targetgroup)
|
||||||
|
|
||||||
else
|
else
|
||||||
-- Debug info.
|
|
||||||
self:T(self.lid..string.format("Zone %s not captured but no target group could be found. Should be captured in the next zone evaluation.", zoneCurr:GetName()))
|
if self:IsFlightgroup() then
|
||||||
|
-- Debug info.
|
||||||
|
self:T(self.lid..string.format("Zone %s not captured but no target group could be found ==> TaskDone as FLIGHTGROUPS cannot capture zones", zoneCurr:GetName()))
|
||||||
|
|
||||||
|
-- Task done.
|
||||||
|
self:TaskDone(Task)
|
||||||
|
else
|
||||||
|
-- Debug info.
|
||||||
|
self:T(self.lid..string.format("Zone %s not captured but no target group could be found. Should be captured in the next zone evaluation.", zoneCurr:GetName()))
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -4882,12 +4892,37 @@ function OPSGROUP:onafterTaskDone(From, Event, To, Task)
|
|||||||
|
|
||||||
-- Remove mission waypoints.
|
-- Remove mission waypoints.
|
||||||
self:T(self.lid.."Remove mission waypoints")
|
self:T(self.lid.."Remove mission waypoints")
|
||||||
self:_RemoveMissionWaypoints(Mission, false)
|
self:_RemoveMissionWaypoints(Mission, false)
|
||||||
|
|
||||||
self:T(self.lid.."Task done ==> Route to mission for next opszone")
|
|
||||||
self:MissionStart(Mission)
|
|
||||||
|
|
||||||
return
|
if self:IsFlightgroup() then
|
||||||
|
|
||||||
|
-- A flight cannot capture so we assume done.
|
||||||
|
|
||||||
|
-- local opszone=Mission:GetTargetData() --Ops.OpsZone#OPSZONE
|
||||||
|
--
|
||||||
|
-- if opszone then
|
||||||
|
--
|
||||||
|
-- local mycoalition=self:GetCoalition()
|
||||||
|
--
|
||||||
|
-- if mycoalition~=opszone:GetOwner() then
|
||||||
|
-- local nenemy=0
|
||||||
|
-- if mycoalition==coalition.side.BLUE then
|
||||||
|
-- nenemy=opszone.Nred
|
||||||
|
-- else
|
||||||
|
-- nenemy=opszone.Nblu
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- end
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
self:T(self.lid.."Task done ==> Route to mission for next opszone")
|
||||||
|
self:MissionStart(Mission)
|
||||||
|
|
||||||
|
return
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Get egress waypoint uid.
|
-- Get egress waypoint uid.
|
||||||
|
|||||||
@ -32,6 +32,7 @@
|
|||||||
-- @field #number Nred Number of red units in the zone.
|
-- @field #number Nred Number of red units in the zone.
|
||||||
-- @field #number Nblu Number of blue units in the zone.
|
-- @field #number Nblu Number of blue units in the zone.
|
||||||
-- @field #number Nnut Number of neutral units in the zone.
|
-- @field #number Nnut Number of neutral units in the zone.
|
||||||
|
-- @field #table Ncoal Number of units in zone for each coalition.
|
||||||
-- @field #number Tred Threat level of red units in the zone.
|
-- @field #number Tred Threat level of red units in the zone.
|
||||||
-- @field #number Tblu Threat level of blue units in the zone.
|
-- @field #number Tblu Threat level of blue units in the zone.
|
||||||
-- @field #number Tnut Threat level of neutral units in the zone.
|
-- @field #number Tnut Threat level of neutral units in the zone.
|
||||||
@ -70,6 +71,7 @@ OPSZONE = {
|
|||||||
Nred = 0,
|
Nred = 0,
|
||||||
Nblu = 0,
|
Nblu = 0,
|
||||||
Nnut = 0,
|
Nnut = 0,
|
||||||
|
Ncoal = {},
|
||||||
Tred = 0,
|
Tred = 0,
|
||||||
Tblu = 0,
|
Tblu = 0,
|
||||||
Tnut = 0,
|
Tnut = 0,
|
||||||
@ -116,7 +118,7 @@ OPSZONE.version="0.6.0"
|
|||||||
|
|
||||||
--- Create a new OPSZONE class object.
|
--- Create a new OPSZONE class object.
|
||||||
-- @param #OPSZONE self
|
-- @param #OPSZONE self
|
||||||
-- @param Core.Zone#ZONE Zone The zone. Needs to be a ZONE\_RADIUS (round) zone. Can be passed as ZONE\_AIRBASE or simply as the name of the airbase.
|
-- @param Core.Zone#ZONE Zone The zone. Can be passed as ZONE\_RADIUS, ZONE_POLYGON, ZONE\_AIRBASE or simply as the name of the airbase.
|
||||||
-- @param #number CoalitionOwner Initial owner of the coaliton. Default `coalition.side.NEUTRAL`.
|
-- @param #number CoalitionOwner Initial owner of the coaliton. Default `coalition.side.NEUTRAL`.
|
||||||
-- @return #OPSZONE self
|
-- @return #OPSZONE self
|
||||||
-- @usage
|
-- @usage
|
||||||
@ -193,6 +195,10 @@ function OPSZONE:New(Zone, CoalitionOwner)
|
|||||||
-- Contested.
|
-- Contested.
|
||||||
self.isContested=false
|
self.isContested=false
|
||||||
|
|
||||||
|
self.Ncoal[coalition.side.BLUE]=0
|
||||||
|
self.Ncoal[coalition.side.RED]=0
|
||||||
|
self.Ncoal[coalition.side.NEUTRAL]=0
|
||||||
|
|
||||||
-- We take the airbase coalition.
|
-- We take the airbase coalition.
|
||||||
if self.airbase then
|
if self.airbase then
|
||||||
self.ownerCurrent=self.airbase:GetCoalition()
|
self.ownerCurrent=self.airbase:GetCoalition()
|
||||||
@ -1197,6 +1203,11 @@ function OPSZONE:Scan()
|
|||||||
self.Nblu=Nblu
|
self.Nblu=Nblu
|
||||||
self.Nnut=Nnut
|
self.Nnut=Nnut
|
||||||
|
|
||||||
|
|
||||||
|
self.Ncoal[coalition.side.BLUE]=Nblu
|
||||||
|
self.Ncoal[coalition.side.RED]=Nred
|
||||||
|
self.Ncoal[coalition.side.NEUTRAL]=Nnut
|
||||||
|
|
||||||
self.Tblu=Tblu
|
self.Tblu=Tblu
|
||||||
self.Tred=Tred
|
self.Tred=Tred
|
||||||
self.Tnut=Tnut
|
self.Tnut=Tnut
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user