Refactoring

This commit is contained in:
Frank
2020-05-21 00:16:19 +02:00
parent 3bb8f35f63
commit b26fb5ac19
2 changed files with 109 additions and 112 deletions
+108 -111
View File
@@ -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
+1 -1
View File
@@ -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)