mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2026-08-19 13:46:08 +00:00
Refactoring
This commit is contained in:
@@ -25,7 +25,7 @@
|
|||||||
-- @field #number auftragsnummer Auftragsnummer.
|
-- @field #number auftragsnummer Auftragsnummer.
|
||||||
-- @field #string type Mission type.
|
-- @field #string type Mission type.
|
||||||
-- @field #string status Mission status.
|
-- @field #string status Mission status.
|
||||||
-- @field #table flightdata Flight specific data.
|
-- @field #table groupdata Flight specific data.
|
||||||
-- @field #string name Mission name.
|
-- @field #string name Mission name.
|
||||||
-- @field #number prio Mission priority.
|
-- @field #number prio Mission priority.
|
||||||
-- @field #boolean urgent Mission is urgent. Running missions with lower prio might be cancelled.
|
-- @field #boolean urgent Mission is urgent. Running missions with lower prio might be cancelled.
|
||||||
@@ -171,7 +171,7 @@ AUFTRAG = {
|
|||||||
Debug = false,
|
Debug = false,
|
||||||
lid = nil,
|
lid = nil,
|
||||||
auftragsnummer = nil,
|
auftragsnummer = nil,
|
||||||
flightdata = {},
|
groupdata = {},
|
||||||
assets = {},
|
assets = {},
|
||||||
missionFraction = 0.5,
|
missionFraction = 0.5,
|
||||||
enrouteTasks = {},
|
enrouteTasks = {},
|
||||||
@@ -321,19 +321,19 @@ AUFTRAG.TargetType={
|
|||||||
-- @field #function func Callback function to check for a condition. Should return a #boolean.
|
-- @field #function func Callback function to check for a condition. Should return a #boolean.
|
||||||
-- @field #table arg Optional arguments passed to the condition callback function.
|
-- @field #table arg Optional arguments passed to the condition callback function.
|
||||||
|
|
||||||
--- Flight specific data. Each flight subscribed to this mission has different data for this.
|
--- Group specific data. Each ops group subscribed to this mission has different data for this.
|
||||||
-- @type AUFTRAG.FlightData
|
-- @type AUFTRAG.GroupData
|
||||||
-- @field Ops.FlightGroup#FLIGHTGROUP flightgroup The flight group.
|
-- @field Ops.OpsGroup#OPSGROUP opsgroup The OPS group.
|
||||||
-- @field Core.Point#COORDINATE waypointcoordinate Waypoint coordinate.
|
-- @field Core.Point#COORDINATE waypointcoordinate Waypoint coordinate.
|
||||||
-- @field #number waypointindex Waypoint index.
|
-- @field #number waypointindex Waypoint index.
|
||||||
-- @field Ops.FlightGroup#FLIGHTGROUP.Task waypointtask Waypoint task.
|
-- @field Ops.OpsGroup#OPSGROUP.Task waypointtask Waypoint task.
|
||||||
-- @field #string status Flight mission status.
|
-- @field #string status Group mission status.
|
||||||
-- @field Ops.AirWing#AIRWING.SquadronAsset asset The squadron asset.
|
-- @field Ops.AirWing#AIRWING.SquadronAsset asset The squadron asset.
|
||||||
|
|
||||||
|
|
||||||
--- AUFTRAG class version.
|
--- AUFTRAG class version.
|
||||||
-- @field #string version
|
-- @field #string version
|
||||||
AUFTRAG.version="0.2.3"
|
AUFTRAG.version="0.3.0"
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- TODO list
|
-- TODO list
|
||||||
@@ -403,7 +403,7 @@ function AUFTRAG:New(Type)
|
|||||||
|
|
||||||
self:AddTransition(AUFTRAG.Status.PLANNED, "Queued", AUFTRAG.Status.QUEUED) -- Mission is in queue of an AIRWING.
|
self:AddTransition(AUFTRAG.Status.PLANNED, "Queued", AUFTRAG.Status.QUEUED) -- Mission is in queue of an AIRWING.
|
||||||
self:AddTransition(AUFTRAG.Status.QUEUED, "Requested", AUFTRAG.Status.REQUESTED) -- Mission assets have been requested from the warehouse.
|
self:AddTransition(AUFTRAG.Status.QUEUED, "Requested", AUFTRAG.Status.REQUESTED) -- Mission assets have been requested from the warehouse.
|
||||||
self:AddTransition(AUFTRAG.Status.REQUESTED, "Scheduled", AUFTRAG.Status.SCHEDULED) -- Mission added to the first flight group queue.
|
self:AddTransition(AUFTRAG.Status.REQUESTED, "Scheduled", AUFTRAG.Status.SCHEDULED) -- Mission added to the first ops group queue.
|
||||||
|
|
||||||
self:AddTransition(AUFTRAG.Status.PLANNED, "Scheduled", AUFTRAG.Status.SCHEDULED) -- From planned directly to scheduled.
|
self:AddTransition(AUFTRAG.Status.PLANNED, "Scheduled", AUFTRAG.Status.SCHEDULED) -- From planned directly to scheduled.
|
||||||
|
|
||||||
@@ -1438,35 +1438,35 @@ function AUFTRAG:AssignSquadrons(Squadrons)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Add a flight group to the mission.
|
--- Add a Ops group to the mission.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP FlightGroup The FLIGHTGROUP object.
|
-- @param Ops.OpsGroup#OPSGROUP OpsGroup The OPSGROUP object.
|
||||||
function AUFTRAG:AddFlightGroup(FlightGroup)
|
function AUFTRAG:AddOpsGroup(OpsGroup)
|
||||||
self:I(self.lid..string.format("Adding flight group %s", FlightGroup.groupname))
|
self:I(self.lid..string.format("Adding Ops group %s", OpsGroup.groupname))
|
||||||
|
|
||||||
local flightdata={} --#AUFTRAG.FlightData
|
local groupdata={} --#AUFTRAG.GroupData
|
||||||
flightdata.flightgroup=FlightGroup
|
groupdata.opsgroup=OpsGroup
|
||||||
flightdata.status=AUFTRAG.GroupStatus.SCHEDULED
|
groupdata.status=AUFTRAG.GroupStatus.SCHEDULED
|
||||||
flightdata.waypointcoordinate=nil
|
groupdata.waypointcoordinate=nil
|
||||||
flightdata.waypointindex=nil
|
groupdata.waypointindex=nil
|
||||||
flightdata.waypointtask=nil
|
groupdata.waypointtask=nil
|
||||||
|
|
||||||
self.flightdata[FlightGroup.groupname]=flightdata
|
self.groupdata[OpsGroup.groupname]=groupdata
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Remove a flight group to the mission.
|
--- Remove a flight group to the mission.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP FlightGroup The FLIGHTGROUP object.
|
-- @param Ops.OpsGroup#OPSGROUP OpsGroup The OPSGROUP object.
|
||||||
function AUFTRAG:DelFlightGroup(FlightGroup)
|
function AUFTRAG:DelOpsGroup(OpsGroup)
|
||||||
self:I(self.lid..string.format("Removing flight group %s", FlightGroup and FlightGroup.groupname or "nil (ERROR)!"))
|
self:I(self.lid..string.format("Removing OPS group %s", OpsGroup and OpsGroup.groupname or "nil (ERROR)!"))
|
||||||
|
|
||||||
if FlightGroup then
|
if OpsGroup then
|
||||||
|
|
||||||
-- Remove mission form flightgroup queue.
|
-- Remove mission form flightgroup queue.
|
||||||
FlightGroup:RemoveMission(self)
|
OpsGroup:RemoveMission(self)
|
||||||
|
|
||||||
self.flightdata[FlightGroup.groupname]=nil
|
self.groupdata[OpsGroup.groupname]=nil
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1500,7 +1500,7 @@ function AUFTRAG:IsScheduled()
|
|||||||
return self.status==AUFTRAG.Status.SCHEDULED
|
return self.status==AUFTRAG.Status.SCHEDULED
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Check if mission is STARTED, i.e. flight is on its way to the mission execution waypoint.
|
--- Check if mission is STARTED, i.e. group is on its way to the mission execution waypoint.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @return #boolean If true, mission is started.
|
-- @return #boolean If true, mission is started.
|
||||||
function AUFTRAG:IsStarted()
|
function AUFTRAG:IsStarted()
|
||||||
@@ -1673,21 +1673,20 @@ end
|
|||||||
-- @param #string From From state.
|
-- @param #string From From state.
|
||||||
-- @param #string Event Event.
|
-- @param #string Event Event.
|
||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
-- @param Ops.AirWing#AIRWING Airwing The airwing.
|
|
||||||
function AUFTRAG:onafterStatus(From, Event, To)
|
function AUFTRAG:onafterStatus(From, Event, To)
|
||||||
|
|
||||||
-- Number of alive mission targets.
|
-- Number of alive mission targets.
|
||||||
local Ntargets=self:CountMissionTargets()
|
local Ntargets=self:CountMissionTargets()
|
||||||
|
|
||||||
-- Number of alive flights attached to this mission.
|
-- Number of alive groups attached to this mission.
|
||||||
local Nflights=self:CountFlightGroups()
|
local Ngroups=self:CountOpsGroups()
|
||||||
|
|
||||||
-- Check if mission is not OVER yet.
|
-- Check if mission is not OVER yet.
|
||||||
if self:IsNotOver() then
|
if self:IsNotOver() then
|
||||||
|
|
||||||
if self:CheckFlightsDone() then
|
if self:CheckFlightsDone() then
|
||||||
|
|
||||||
-- All flights have reported MISSON DONE.
|
-- All groups have reported MISSON DONE.
|
||||||
self:Done()
|
self:Done()
|
||||||
|
|
||||||
elseif (self.Tstop and timer.getAbsTime()>self.Tstop+10) or (self.Ntargets>0 and Ntargets==0) then
|
elseif (self.Tstop and timer.getAbsTime()>self.Tstop+10) or (self.Ntargets>0 and Ntargets==0) then
|
||||||
@@ -1714,17 +1713,17 @@ function AUFTRAG:onafterStatus(From, Event, To)
|
|||||||
local commander=self.wingcommander and tostring(self.wingcommander.coalition) or "N/A"
|
local commander=self.wingcommander and tostring(self.wingcommander.coalition) or "N/A"
|
||||||
|
|
||||||
-- Info message.
|
-- Info message.
|
||||||
self:I(self.lid..string.format("Status %s: Target=%s, T=%s-%s, assets=%d, flights=%d, targets=%d, wing=%s, commander=%s", self.status, targetname, Cstart, Cstop, #self.assets, Nflights, Ntargets, airwing, commander))
|
self:I(self.lid..string.format("Status %s: Target=%s, T=%s-%s, assets=%d, groups=%d, targets=%d, wing=%s, commander=%s", self.status, targetname, Cstart, Cstop, #self.assets, Ngroups, Ntargets, airwing, commander))
|
||||||
|
|
||||||
-- Check for error.
|
-- Check for error.
|
||||||
if fsmstate~=self.status then
|
if fsmstate~=self.status then
|
||||||
self:E(self.lid..string.format("ERROR: FSM state %s != %s mission status!", fsmstate, self.status))
|
self:E(self.lid..string.format("ERROR: FSM state %s != %s mission status!", fsmstate, self.status))
|
||||||
end
|
end
|
||||||
|
|
||||||
local text="Flight data:"
|
local text="Group data:"
|
||||||
for groupname,_flightdata in pairs(self.flightdata) do
|
for groupname,_groupdata in pairs(self.groupdata) do
|
||||||
local flightdata=_flightdata --#AUFTRAG.FlightData
|
local groupdata=_groupdata --#AUFTRAG.GroupData
|
||||||
text=text..string.format("\n- %s: status mission=%s flightgroup=%s", groupname, flightdata.status, flightdata.flightgroup and flightdata.flightgroup:GetState() or "N/A")
|
text=text..string.format("\n- %s: status mission=%s opsgroup=%s", groupname, groupdata.status, groupdata.opsgroup and groupdata.opsgroup:GetState() or "N/A")
|
||||||
end
|
end
|
||||||
self:I(self.lid..text)
|
self:I(self.lid..text)
|
||||||
|
|
||||||
@@ -1811,25 +1810,25 @@ end
|
|||||||
--- Get asset data table.
|
--- Get asset data table.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param #string AssetName Name of the asset.
|
-- @param #string AssetName Name of the asset.
|
||||||
-- @return #AUFTRAG.FlightData Flight data or nil if flightgroup does not exist.
|
-- @return #AUFTRAG.GroupData Flight data or nil if OPS group does not exist.
|
||||||
function AUFTRAG:GetAssetDataByName(AssetName)
|
function AUFTRAG:GetAssetDataByName(AssetName)
|
||||||
return self.flightdata[tostring(AssetName)]
|
return self.groupdata[tostring(AssetName)]
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Get flight data table.
|
--- Get flight data table.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP flightgroup The flight group.
|
-- @param Ops.OpsGroup#OPSGROUP flightgroup The flight group.
|
||||||
-- @return #AUFTRAG.FlightData Flight data or nil if flightgroup does not exist.
|
-- @return #AUFTRAG.GroupData Flight data or nil if flightgroup does not exist.
|
||||||
function AUFTRAG:GetFlightData(flightgroup)
|
function AUFTRAG:GetFlightData(flightgroup)
|
||||||
if flightgroup and self.flightdata then
|
if flightgroup and self.groupdata then
|
||||||
return self.flightdata[flightgroup.groupname]
|
return self.groupdata[flightgroup.groupname]
|
||||||
end
|
end
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Set flightgroup mission status.
|
--- Set flightgroup mission status.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP flightgroup The flight group.
|
-- @param Ops.OpsGroup#OPSGROUP flightgroup The flight group.
|
||||||
-- @param #string status New status.
|
-- @param #string status New status.
|
||||||
function AUFTRAG:SetFlightStatus(flightgroup, status)
|
function AUFTRAG:SetFlightStatus(flightgroup, status)
|
||||||
self:I(self.lid..string.format("Setting flight %s to status %s", flightgroup and flightgroup.groupname or "nil", tostring(status)))
|
self:I(self.lid..string.format("Setting flight %s to status %s", flightgroup and flightgroup.groupname or "nil", tostring(status)))
|
||||||
@@ -1838,9 +1837,9 @@ function AUFTRAG:SetFlightStatus(flightgroup, status)
|
|||||||
if self:GetFlightStatus(flightgroup)==AUFTRAG.GroupStatus.CANCELLED and status==AUFTRAG.GroupStatus.DONE then
|
if self:GetFlightStatus(flightgroup)==AUFTRAG.GroupStatus.CANCELLED and status==AUFTRAG.GroupStatus.DONE then
|
||||||
-- Do not overwrite a CANCELLED status with a DONE status.
|
-- Do not overwrite a CANCELLED status with a DONE status.
|
||||||
else
|
else
|
||||||
local flightdata=self:GetFlightData(flightgroup)
|
local groupdata=self:GetFlightData(flightgroup)
|
||||||
if flightdata then
|
if groupdata then
|
||||||
flightdata.status=status
|
groupdata.status=status
|
||||||
else
|
else
|
||||||
self:E(self.lid.."WARNING: Could not SET flight data for flight group. Setting status to DONE")
|
self:E(self.lid.."WARNING: Could not SET flight data for flight group. Setting status to DONE")
|
||||||
end
|
end
|
||||||
@@ -1861,17 +1860,17 @@ end
|
|||||||
|
|
||||||
--- Get flightgroup mission status.
|
--- Get flightgroup mission status.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP flightgroup The flight group.
|
-- @param Ops.OpsGroup#OPSGROUP flightgroup The flight group.
|
||||||
function AUFTRAG:GetFlightStatus(flightgroup)
|
function AUFTRAG:GetFlightStatus(flightgroup)
|
||||||
self:T3(self.lid..string.format("Trying to get Flight status for flight group %s", flightgroup and flightgroup.groupname or "nil"))
|
self:T3(self.lid..string.format("Trying to get Flight status for flight group %s", flightgroup and flightgroup.groupname or "nil"))
|
||||||
|
|
||||||
local flightdata=self:GetFlightData(flightgroup)
|
local groupdata=self:GetFlightData(flightgroup)
|
||||||
|
|
||||||
if flightdata then
|
if groupdata then
|
||||||
return flightdata.status
|
return groupdata.status
|
||||||
else
|
else
|
||||||
|
|
||||||
self:E(self.lid..string.format("WARNING: Could not GET flightdata for flightgroup %s. Returning status DONE.", flightgroup and flightgroup.groupname or "nil"))
|
self:E(self.lid..string.format("WARNING: Could not GET groupdata for flightgroup %s. Returning status DONE.", flightgroup and flightgroup.groupname or "nil"))
|
||||||
return AUFTRAG.GroupStatus.DONE
|
return AUFTRAG.GroupStatus.DONE
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -1880,12 +1879,12 @@ end
|
|||||||
|
|
||||||
--- Set flightgroup waypoint coordinate.
|
--- Set flightgroup waypoint coordinate.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP flightgroup The flight group.
|
-- @param Ops.OpsGroup#OPSGROUP flightgroup The flight group.
|
||||||
-- @param Core.Point#COORDINATE coordinate Waypoint Coordinate.
|
-- @param Core.Point#COORDINATE coordinate Waypoint Coordinate.
|
||||||
function AUFTRAG:SetFlightWaypointCoordinate(flightgroup, coordinate)
|
function AUFTRAG:SetFlightWaypointCoordinate(flightgroup, coordinate)
|
||||||
local flightdata=self:GetFlightData(flightgroup)
|
local groupdata=self:GetFlightData(flightgroup)
|
||||||
if flightdata then
|
if groupdata then
|
||||||
flightdata.waypointcoordinate=coordinate
|
groupdata.waypointcoordinate=coordinate
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1893,56 +1892,56 @@ end
|
|||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @return Core.Point#COORDINATE Waypoint Coordinate.
|
-- @return Core.Point#COORDINATE Waypoint Coordinate.
|
||||||
function AUFTRAG:GetFlightWaypointCoordinate(flightgroup)
|
function AUFTRAG:GetFlightWaypointCoordinate(flightgroup)
|
||||||
local flightdata=self:GetFlightData(flightgroup)
|
local groupdata=self:GetFlightData(flightgroup)
|
||||||
if flightdata then
|
if groupdata then
|
||||||
return flightdata.waypointcoordinate
|
return groupdata.waypointcoordinate
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Set flightgroup waypoint task.
|
--- Set flightgroup waypoint task.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP flightgroup The flight group.
|
-- @param Ops.OpsGroup#OPSGROUP flightgroup The flight group.
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP.Task task Waypoint task.
|
-- @param Ops.OpsGroup#OPSGROUP.Task task Waypoint task.
|
||||||
function AUFTRAG:SetFlightWaypointTask(flightgroup, task)
|
function AUFTRAG:SetFlightWaypointTask(flightgroup, task)
|
||||||
self:I(self.lid..string.format("Setting waypoint task %s", task and task.description or "WTF"))
|
self:I(self.lid..string.format("Setting waypoint task %s", task and task.description or "WTF"))
|
||||||
local flightdata=self:GetFlightData(flightgroup)
|
local groupdata=self:GetFlightData(flightgroup)
|
||||||
if flightdata then
|
if groupdata then
|
||||||
flightdata.waypointtask=task
|
groupdata.waypointtask=task
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Get flightgroup waypoint task.
|
--- Get flightgroup waypoint task.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP flightgroup The flight group.
|
-- @param Ops.OpsGroup#OPSGROUP flightgroup The flight group.
|
||||||
-- @return Ops.FlightGroup#FLIGHTGROUP.Task task Waypoint task. Waypoint task.
|
-- @return Ops.OpsGroup#OPSGROUP.Task task Waypoint task. Waypoint task.
|
||||||
function AUFTRAG:GetFlightWaypointTask(flightgroup)
|
function AUFTRAG:GetFlightWaypointTask(flightgroup)
|
||||||
local flightdata=self:GetFlightData(flightgroup)
|
local groupdata=self:GetFlightData(flightgroup)
|
||||||
if flightdata then
|
if groupdata then
|
||||||
return flightdata.waypointtask
|
return groupdata.waypointtask
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Set flightgroup waypoint index.
|
--- Set flightgroup waypoint index.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP flightgroup The flight group.
|
-- @param Ops.OpsGroup#OPSGROUP flightgroup The flight group.
|
||||||
-- @param #number waypointindex Waypoint index.
|
-- @param #number waypointindex Waypoint index.
|
||||||
function AUFTRAG:SetFlightWaypointIndex(flightgroup, waypointindex)
|
function AUFTRAG:SetFlightWaypointIndex(flightgroup, waypointindex)
|
||||||
self:I(self.lid..string.format("Setting waypoint index %d", waypointindex))
|
self:I(self.lid..string.format("Setting waypoint index %d", waypointindex))
|
||||||
local flightdata=self:GetFlightData(flightgroup)
|
local groupdata=self:GetFlightData(flightgroup)
|
||||||
if flightdata then
|
if groupdata then
|
||||||
flightdata.waypointindex=waypointindex
|
groupdata.waypointindex=waypointindex
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Get flightgroup waypoint index.
|
--- Get flightgroup waypoint index.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP flightgroup The flight group.
|
-- @param Ops.OpsGroup#OPSGROUP flightgroup The flight group.
|
||||||
-- @return #number Waypoint index
|
-- @return #number Waypoint index
|
||||||
function AUFTRAG:GetFlightWaypointIndex(flightgroup)
|
function AUFTRAG:GetFlightWaypointIndex(flightgroup)
|
||||||
local flightdata=self:GetFlightData(flightgroup)
|
local groupdata=self:GetFlightData(flightgroup)
|
||||||
if flightdata then
|
if groupdata then
|
||||||
return flightdata.waypointindex
|
return groupdata.waypointindex
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1959,15 +1958,15 @@ function AUFTRAG:CheckFlightsDone()
|
|||||||
|
|
||||||
-- It could be that all flights were destroyed on the way to the mission execution waypoint.
|
-- It could be that all flights were destroyed on the way to the mission execution waypoint.
|
||||||
-- TODO: would be better to check if everybody is dead by now.
|
-- TODO: would be better to check if everybody is dead by now.
|
||||||
if self:IsStarted() and self:CountFlightGroups()==0 then
|
if self:IsStarted() and self:CountOpsGroups()==0 then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Check status of all flight groups.
|
-- Check status of all flight groups.
|
||||||
for groupname,data in pairs(self.flightdata) do
|
for groupname,data in pairs(self.groupdata) do
|
||||||
local flightdata=data --#AUFTRAG.FlightData
|
local groupdata=data --#AUFTRAG.GroupData
|
||||||
if flightdata then
|
if groupdata then
|
||||||
if flightdata.status==AUFTRAG.GroupStatus.DONE or flightdata.status==AUFTRAG.GroupStatus.CANCELLED then
|
if groupdata.status==AUFTRAG.GroupStatus.DONE or groupdata.status==AUFTRAG.GroupStatus.CANCELLED then
|
||||||
-- This one is done or cancelled.
|
-- This one is done or cancelled.
|
||||||
else
|
else
|
||||||
-- At least this flight is not DONE or CANCELLED.
|
-- At least this flight is not DONE or CANCELLED.
|
||||||
@@ -1994,10 +1993,10 @@ function AUFTRAG:OnEventUnitLost(EventData)
|
|||||||
local group=EventData.IniGroup
|
local group=EventData.IniGroup
|
||||||
local unitname=EventData.IniUnitName
|
local unitname=EventData.IniUnitName
|
||||||
|
|
||||||
for _,_flightdata in pairs(self.flightdata) do
|
for _,_groupdata in pairs(self.groupdata) do
|
||||||
local flightdata=_flightdata --#AUFTRAG.FlightData
|
local groupdata=_groupdata --#AUFTRAG.GroupData
|
||||||
if flightdata and flightdata.flightgroup and flightdata.flightgroup.groupname==EventData.IniGroupName then
|
if groupdata and groupdata.opsgroup and groupdata.opsgroup.groupname==EventData.IniGroupName then
|
||||||
self:I(self.lid..string.format("UNIT LOST event for flightgroup %s unit %s", flightdata.flightgroup.groupname, EventData.IniUnitName))
|
self:I(self.lid..string.format("UNIT LOST event for flightgroup %s unit %s", groupdata.opsgroup.groupname, EventData.IniUnitName))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -2047,7 +2046,7 @@ end
|
|||||||
-- @param #string From From state.
|
-- @param #string From From state.
|
||||||
-- @param #string Event Event.
|
-- @param #string Event Event.
|
||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP FlightGroup
|
-- @param Ops.OpsGroup#OPSGROUP FlightGroup
|
||||||
function AUFTRAG:onafterScheduled(From, Event, To, FlightGroup)
|
function AUFTRAG:onafterScheduled(From, Event, To, FlightGroup)
|
||||||
self.status=AUFTRAG.Status.SCHEDULED
|
self.status=AUFTRAG.Status.SCHEDULED
|
||||||
self:I(self.lid..string.format("New mission status=%s", self.status))
|
self:I(self.lid..string.format("New mission status=%s", self.status))
|
||||||
@@ -2093,12 +2092,10 @@ end
|
|||||||
-- @param #string From From state.
|
-- @param #string From From state.
|
||||||
-- @param #string Event Event.
|
-- @param #string Event Event.
|
||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
-- @param Ops.FlightGroup#FLIGHTGROUP FlightGroup The flightgroup that is dead now.
|
-- @param Ops.OpsGroup#OPSGROUP OpsGroup The ops group that is dead now.
|
||||||
function AUFTRAG:onafterFlightDead(From, Event, To, FlightGroup)
|
function AUFTRAG:onafterFlightDead(From, Event, To, OpsGroup)
|
||||||
|
|
||||||
--self:SetFlightStatus(FlightGroup, AUFTRAG.GroupStatus.DONE)
|
local asset=self:GetAssetByName(OpsGroup.groupname)
|
||||||
|
|
||||||
local asset=self:GetAssetByName(FlightGroup.groupname)
|
|
||||||
if asset then
|
if asset then
|
||||||
self:AssetDead(asset)
|
self:AssetDead(asset)
|
||||||
end
|
end
|
||||||
@@ -2114,9 +2111,9 @@ end
|
|||||||
function AUFTRAG:onafterAssetDead(From, Event, To, Asset)
|
function AUFTRAG:onafterAssetDead(From, Event, To, Asset)
|
||||||
|
|
||||||
-- Remove flightgroup from mission.
|
-- Remove flightgroup from mission.
|
||||||
--self:DelFlightGroup(Asset.flightgroup)
|
--self:DelOpsGroup(Asset.opsgroup)
|
||||||
|
|
||||||
local N=self:CountFlightGroups()
|
local N=self:CountOpsGroups()
|
||||||
|
|
||||||
-- All assets dead?
|
-- All assets dead?
|
||||||
if N==0 then
|
if N==0 then
|
||||||
@@ -2167,7 +2164,7 @@ end
|
|||||||
function AUFTRAG:onafterCancel(From, Event, To)
|
function AUFTRAG:onafterCancel(From, Event, To)
|
||||||
|
|
||||||
-- Debug info.
|
-- Debug info.
|
||||||
self:I(self.lid..string.format("CANCELLING mission in status %s. Will wait for flights to report mission DONE before evaluation.", self.status))
|
self:I(self.lid..string.format("CANCELLING mission in status %s. Will wait for groups to report mission DONE before evaluation.", self.status))
|
||||||
|
|
||||||
-- Time stamp.
|
-- Time stamp.
|
||||||
self.Tover=timer.getAbsTime()
|
self.Tover=timer.getAbsTime()
|
||||||
@@ -2195,9 +2192,9 @@ function AUFTRAG:onafterCancel(From, Event, To)
|
|||||||
|
|
||||||
self:I(self.lid..string.format("No airwing or wingcommander. Attached flights will cancel the mission on their own. Will wait for mission DONE before evaluation!"))
|
self:I(self.lid..string.format("No airwing or wingcommander. Attached flights will cancel the mission on their own. Will wait for mission DONE before evaluation!"))
|
||||||
|
|
||||||
for _,_flightdata in pairs(self.flightdata) do
|
for _,_groupdata in pairs(self.groupdata) do
|
||||||
local flightdata=_flightdata --#AUFTRAG.FlightData
|
local groupdata=_groupdata --#AUFTRAG.GroupData
|
||||||
flightdata.flightgroup:MissionCancel(self)
|
groupdata.opsgroup:MissionCancel(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -2266,16 +2263,16 @@ function AUFTRAG:onafterRepeat(From, Event, To)
|
|||||||
-- No mission assets.
|
-- No mission assets.
|
||||||
self.assets={}
|
self.assets={}
|
||||||
|
|
||||||
for _,_flightdata in pairs(self.flightdata) do
|
for _,_groupdata in pairs(self.groupdata) do
|
||||||
local flightdata=_flightdata --#AUFTRAG.FlightData
|
local groupdata=_groupdata --#AUFTRAG.GroupData
|
||||||
local flightgroup=flightdata.flightgroup
|
local flightgroup=groupdata.opsgroup
|
||||||
if flightgroup then
|
if flightgroup then
|
||||||
self:DelFlightGroup(flightgroup)
|
self:DelOpsGroup(flightgroup)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
-- No flight data.
|
-- No flight data.
|
||||||
self.flightdata={}
|
self.groupdata={}
|
||||||
|
|
||||||
-- Call status again.
|
-- Call status again.
|
||||||
self:__Status(-30)
|
self:__Status(-30)
|
||||||
@@ -2304,16 +2301,16 @@ function AUFTRAG:onafterStop(From, Event, To)
|
|||||||
self.airwing:RemoveMission(self)
|
self.airwing:RemoveMission(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
for _,_flightdata in pairs(self.flightdata) do
|
for _,_groupdata in pairs(self.groupdata) do
|
||||||
local flightdata=_flightdata --#AUFTRAG.FlightData
|
local groupdata=_groupdata --#AUFTRAG.GroupData
|
||||||
flightdata.flightgroup:RemoveMission(self)
|
groupdata.opsgroup:RemoveMission(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- No mission assets.
|
-- No mission assets.
|
||||||
self.assets={}
|
self.assets={}
|
||||||
|
|
||||||
-- No flight data.
|
-- No flight data.
|
||||||
self.flightdata={}
|
self.groupdata={}
|
||||||
|
|
||||||
-- Clear pending scheduler calls.
|
-- Clear pending scheduler calls.
|
||||||
self.CallScheduler:Clear()
|
self.CallScheduler:Clear()
|
||||||
@@ -2601,11 +2598,11 @@ end
|
|||||||
--- Count alive flight groups assigned for this mission.
|
--- Count alive flight groups assigned for this mission.
|
||||||
-- @param #AUFTRAG self
|
-- @param #AUFTRAG self
|
||||||
-- @return #number Number of alive flight groups.
|
-- @return #number Number of alive flight groups.
|
||||||
function AUFTRAG:CountFlightGroups()
|
function AUFTRAG:CountOpsGroups()
|
||||||
local N=0
|
local N=0
|
||||||
for _,_flightdata in pairs(self.flightdata) do
|
for _,_groupdata in pairs(self.groupdata) do
|
||||||
local flightdata=_flightdata --#AUFTRAG.FlightData
|
local groupdata=_groupdata --#AUFTRAG.GroupData
|
||||||
if flightdata and flightdata.flightgroup and flightdata.flightgroup:IsAlive() then
|
if groupdata and groupdata.opsgroup and groupdata.opsgroup:IsAlive() then
|
||||||
N=N+1
|
N=N+1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -2746,7 +2743,7 @@ function AUFTRAG:UpdateMarker()
|
|||||||
local text=string.format("%s %s: %s", self.name, self.type:upper(), self.status:upper())
|
local text=string.format("%s %s: %s", self.name, self.type:upper(), self.status:upper())
|
||||||
text=text..string.format("\n%s", self:GetTargetName())
|
text=text..string.format("\n%s", self:GetTargetName())
|
||||||
text=text..string.format("\nTargets %d/%d, Life Points=%d/%d", self:CountMissionTargets(), self.Ntargets, self:GetTargetLife(), self:GetTargetInitialLife())
|
text=text..string.format("\nTargets %d/%d, Life Points=%d/%d", self:CountMissionTargets(), self.Ntargets, self:GetTargetLife(), self:GetTargetInitialLife())
|
||||||
text=text..string.format("\nFlights %d/%d", self:CountFlightGroups(), self.nassets)
|
text=text..string.format("\nFlights %d/%d", self:CountOpsGroups(), self.nassets)
|
||||||
|
|
||||||
if not self.marker then
|
if not self.marker then
|
||||||
|
|
||||||
|
|||||||
@@ -1239,7 +1239,7 @@ end
|
|||||||
function OPSGROUP:AddMission(Mission)
|
function OPSGROUP:AddMission(Mission)
|
||||||
|
|
||||||
-- Add flight group to mission.
|
-- Add flight group to mission.
|
||||||
Mission:AddFlightGroup(self)
|
Mission:AddOpsGroup(self)
|
||||||
|
|
||||||
-- Set flight status to SCHEDULED..
|
-- Set flight status to SCHEDULED..
|
||||||
Mission:SetFlightStatus(self, AUFTRAG.GroupStatus.SCHEDULED)
|
Mission:SetFlightStatus(self, AUFTRAG.GroupStatus.SCHEDULED)
|
||||||
|
|||||||
Reference in New Issue
Block a user