mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Ops
This commit is contained in:
parent
2e998dc315
commit
5ad30277ba
@ -717,6 +717,22 @@ function BASE:CreateEventCrash( EventTime, Initiator )
|
|||||||
world.onEvent( Event )
|
world.onEvent( Event )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Creation of a Crash Event.
|
||||||
|
-- @param #BASE self
|
||||||
|
-- @param DCS#Time EventTime The time stamp of the event.
|
||||||
|
-- @param DCS#Object Initiator The initiating object of the event.
|
||||||
|
function BASE:CreateEventUnitLost(EventTime, Initiator)
|
||||||
|
self:F( { EventTime, Initiator } )
|
||||||
|
|
||||||
|
local Event = {
|
||||||
|
id = world.event.S_EVENT_UNIT_LOST,
|
||||||
|
time = EventTime,
|
||||||
|
initiator = Initiator,
|
||||||
|
}
|
||||||
|
|
||||||
|
world.onEvent( Event )
|
||||||
|
end
|
||||||
|
|
||||||
--- Creation of a Dead Event.
|
--- Creation of a Dead Event.
|
||||||
-- @param #BASE self
|
-- @param #BASE self
|
||||||
-- @param DCS#Time EventTime The time stamp of the event.
|
-- @param DCS#Time EventTime The time stamp of the event.
|
||||||
|
|||||||
@ -14,7 +14,6 @@
|
|||||||
--- AIRWING class.
|
--- AIRWING class.
|
||||||
-- @type AIRWING
|
-- @type AIRWING
|
||||||
-- @field #string ClassName Name of the class.
|
-- @field #string ClassName Name of the class.
|
||||||
-- @field #boolean Debug Debug mode. Messages to all about status.
|
|
||||||
-- @field #number verbose Verbosity of output.
|
-- @field #number verbose Verbosity of output.
|
||||||
-- @field #string lid Class id string for output to DCS log file.
|
-- @field #string lid Class id string for output to DCS log file.
|
||||||
-- @field #table menu Table of menu items.
|
-- @field #table menu Table of menu items.
|
||||||
@ -109,7 +108,6 @@
|
|||||||
-- @field #AIRWING
|
-- @field #AIRWING
|
||||||
AIRWING = {
|
AIRWING = {
|
||||||
ClassName = "AIRWING",
|
ClassName = "AIRWING",
|
||||||
Debug = false,
|
|
||||||
verbose = 0,
|
verbose = 0,
|
||||||
lid = nil,
|
lid = nil,
|
||||||
menu = nil,
|
menu = nil,
|
||||||
@ -394,7 +392,7 @@ function AIRWING:FetchPayloadFromStock(UnitType, MissionType, Payloads)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Debug.
|
-- Debug.
|
||||||
if self.Debug then
|
if self.verbose>=4 then
|
||||||
self:I(self.lid..string.format("Looking for payload for unit type=%s and mission type=%s", UnitType, MissionType))
|
self:I(self.lid..string.format("Looking for payload for unit type=%s and mission type=%s", UnitType, MissionType))
|
||||||
for i,_payload in pairs(self.payloads) do
|
for i,_payload in pairs(self.payloads) do
|
||||||
local payload=_payload --#AIRWING.Payload
|
local payload=_payload --#AIRWING.Payload
|
||||||
@ -456,7 +454,7 @@ function AIRWING:FetchPayloadFromStock(UnitType, MissionType, Payloads)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Debug.
|
-- Debug.
|
||||||
if self.Debug then
|
if self.verbose>=4 then
|
||||||
self:I(self.lid..string.format("Sorted payloads for mission type X and aircraft type=Y:"))
|
self:I(self.lid..string.format("Sorted payloads for mission type X and aircraft type=Y:"))
|
||||||
for _,_payload in ipairs(self.payloads) do
|
for _,_payload in ipairs(self.payloads) do
|
||||||
local payload=_payload --#AIRWING.Payload
|
local payload=_payload --#AIRWING.Payload
|
||||||
@ -576,7 +574,7 @@ end
|
|||||||
|
|
||||||
--- Remove asset from squadron.
|
--- Remove asset from squadron.
|
||||||
-- @param #AIRWING self
|
-- @param #AIRWING self
|
||||||
-- @param #AIRWING.SquadronAsset Asset
|
-- @param #AIRWING.SquadronAsset Asset The squad asset.
|
||||||
function AIRWING:RemoveAssetFromSquadron(Asset)
|
function AIRWING:RemoveAssetFromSquadron(Asset)
|
||||||
local squad=self:GetSquadronOfAsset(Asset)
|
local squad=self:GetSquadronOfAsset(Asset)
|
||||||
if squad then
|
if squad then
|
||||||
@ -1541,7 +1539,9 @@ function AIRWING:onafterSquadAssetReturned(From, Event, To, Squadron, Asset)
|
|||||||
self:T(self.lid..string.format("Asset %s from squadron %s returned! asset.assignment=\"%s\"", Asset.spawngroupname, Squadron.name, tostring(Asset.assignment)))
|
self:T(self.lid..string.format("Asset %s from squadron %s returned! asset.assignment=\"%s\"", Asset.spawngroupname, Squadron.name, tostring(Asset.assignment)))
|
||||||
|
|
||||||
-- Stop flightgroup.
|
-- Stop flightgroup.
|
||||||
Asset.flightgroup:Stop()
|
if Asset.flightgroup and not Asset.flightgroup:IsStopped() then
|
||||||
|
Asset.flightgroup:Stop()
|
||||||
|
end
|
||||||
|
|
||||||
-- Return payload.
|
-- Return payload.
|
||||||
self:ReturnPayloadFromAsset(Asset)
|
self:ReturnPayloadFromAsset(Asset)
|
||||||
|
|||||||
@ -2552,10 +2552,8 @@ end
|
|||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
-- @param Ops.AirWing#AIRWING.SquadronAsset Asset The asset.
|
-- @param Ops.AirWing#AIRWING.SquadronAsset Asset The asset.
|
||||||
function AUFTRAG:onafterAssetDead(From, Event, To, Asset)
|
function AUFTRAG:onafterAssetDead(From, Event, To, Asset)
|
||||||
|
|
||||||
-- Remove opsgroup from mission.
|
-- Number of groups alive.
|
||||||
--self:DelOpsGroup(Asset.opsgroup)
|
|
||||||
|
|
||||||
local N=self:CountOpsGroups()
|
local N=self:CountOpsGroups()
|
||||||
|
|
||||||
-- All assets dead?
|
-- All assets dead?
|
||||||
@ -2568,15 +2566,22 @@ function AUFTRAG:onafterAssetDead(From, Event, To, Asset)
|
|||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
self:E(self.lid.."ERROR: All assets are dead not but mission was already over... Investigate!")
|
--self:E(self.lid.."ERROR: All assets are dead not but mission was already over... Investigate!")
|
||||||
-- Now this can happen, because when a opsgroup dies (sometimes!), the mission is DONE
|
-- Now this can happen, because when a opsgroup dies (sometimes!), the mission is DONE
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Remove asset from airwing.
|
-- Asset belonged to an airwing.
|
||||||
if self.airwing then
|
if self.airwing then
|
||||||
self.airwing:RemoveAssetFromSquadron(Asset)
|
|
||||||
|
if self.Ncasualties==self.Nelements then
|
||||||
|
-- All elements were destroyed ==> Asset is gone.
|
||||||
|
self.airwing:RemoveAssetFromSquadron(Asset)
|
||||||
|
else
|
||||||
|
-- Not all assets were destroyed (despawn) ==> Add asset back to airwing.
|
||||||
|
self.airwing:AddAsset(Asset.flightgroup.group, 1)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Delete asset from mission.
|
-- Delete asset from mission.
|
||||||
|
|||||||
@ -46,6 +46,7 @@
|
|||||||
-- @field #boolean ishelo If true, the is a helicopter group.
|
-- @field #boolean ishelo If true, the is a helicopter group.
|
||||||
-- @field #number callsignName Callsign name.
|
-- @field #number callsignName Callsign name.
|
||||||
-- @field #number callsignNumber Callsign number.
|
-- @field #number callsignNumber Callsign number.
|
||||||
|
-- @field #number Ndestroyed Number of destroyed units.
|
||||||
--
|
--
|
||||||
-- @extends Ops.OpsGroup#OPSGROUP
|
-- @extends Ops.OpsGroup#OPSGROUP
|
||||||
|
|
||||||
@ -132,6 +133,7 @@ FLIGHTGROUP = {
|
|||||||
Tparking = nil,
|
Tparking = nil,
|
||||||
menu = nil,
|
menu = nil,
|
||||||
ishelo = nil,
|
ishelo = nil,
|
||||||
|
Ndestroyed = 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1346,15 +1348,9 @@ end
|
|||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
-- @param #FLIGHTGROUP.Element Element The flight group element.
|
-- @param #FLIGHTGROUP.Element Element The flight group element.
|
||||||
function FLIGHTGROUP:onafterElementDestroyed(From, Event, To, Element)
|
function FLIGHTGROUP:onafterElementDestroyed(From, Event, To, Element)
|
||||||
self:T(self.lid..string.format("Element dead %s.", Element.name))
|
|
||||||
|
|
||||||
-- Cancel all missions.
|
|
||||||
for _,_mission in pairs(self.missionqueue) do
|
|
||||||
local mission=_mission --Ops.Auftrag#AUFTRAG
|
|
||||||
|
|
||||||
mission:ElementDestroyed(self, Element)
|
-- Call OPSGROUP function.
|
||||||
|
self:GetParent(self).onafterElementDestroyed(self, From, Event, To, Element)
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1365,7 +1361,9 @@ end
|
|||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
-- @param #FLIGHTGROUP.Element Element The flight group element.
|
-- @param #FLIGHTGROUP.Element Element The flight group element.
|
||||||
function FLIGHTGROUP:onafterElementDead(From, Event, To, Element)
|
function FLIGHTGROUP:onafterElementDead(From, Event, To, Element)
|
||||||
self:T(self.lid..string.format("Element dead %s.", Element.name))
|
|
||||||
|
-- Call OPSGROUP function.
|
||||||
|
self:GetParent(self).onafterElementDead(self, From, Event, To, Element)
|
||||||
|
|
||||||
if self.flightcontrol and Element.parking then
|
if self.flightcontrol and Element.parking then
|
||||||
self.flightcontrol:SetParkingFree(Element.parking)
|
self.flightcontrol:SetParkingFree(Element.parking)
|
||||||
@ -1373,9 +1371,7 @@ function FLIGHTGROUP:onafterElementDead(From, Event, To, Element)
|
|||||||
|
|
||||||
-- Not parking any more.
|
-- Not parking any more.
|
||||||
Element.parking=nil
|
Element.parking=nil
|
||||||
|
|
||||||
-- Set element status.
|
|
||||||
self:_UpdateStatus(Element, OPSGROUP.ElementStatus.DEAD)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -1569,7 +1565,6 @@ 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 Wrapper.Airbase#AIRBASE airbase The airbase the flight landed.
|
|
||||||
function FLIGHTGROUP:onafterLandedAt(From, Event, To)
|
function FLIGHTGROUP:onafterLandedAt(From, Event, To)
|
||||||
self:I(self.lid..string.format("Flight landed at"))
|
self:I(self.lid..string.format("Flight landed at"))
|
||||||
end
|
end
|
||||||
@ -1601,11 +1596,6 @@ end
|
|||||||
-- @param #string Event Event.
|
-- @param #string Event Event.
|
||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
function FLIGHTGROUP:onafterDead(From, Event, To)
|
function FLIGHTGROUP:onafterDead(From, Event, To)
|
||||||
self:T(self.lid..string.format("Flight dead!"))
|
|
||||||
|
|
||||||
-- Delete waypoints so they are re-initialized at the next spawn.
|
|
||||||
self.waypoints=nil
|
|
||||||
self.groupinitialized=false
|
|
||||||
|
|
||||||
-- Remove flight from all FC queues.
|
-- Remove flight from all FC queues.
|
||||||
if self.flightcontrol then
|
if self.flightcontrol then
|
||||||
@ -1613,17 +1603,9 @@ function FLIGHTGROUP:onafterDead(From, Event, To)
|
|||||||
self.flightcontrol=nil
|
self.flightcontrol=nil
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Cancel all missions.
|
-- Call OPSGROUP function.
|
||||||
for _,_mission in pairs(self.missionqueue) do
|
self:GetParent(self).onafterDead(self, From, Event, To)
|
||||||
local mission=_mission --Ops.Auftrag#AUFTRAG
|
|
||||||
|
|
||||||
self:MissionCancel(mission)
|
|
||||||
mission:GroupDead(self)
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Stop
|
|
||||||
self:Stop()
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -491,12 +491,20 @@ function OPSGROUP:GetDCSGroup()
|
|||||||
return DCSGroup
|
return DCSGroup
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Get DCS GROUP object.
|
--- Get MOOSE UNIT object.
|
||||||
-- @param #OPSGROUP self
|
-- @param #OPSGROUP self
|
||||||
-- @return DCS#Group DCS group object.
|
-- @param #number UnitNumber Number of the unit in the group. Default first unit.
|
||||||
|
-- @return Wrapper.Unit#UNIT The MOOSE UNIT object.
|
||||||
function OPSGROUP:GetUnit(UnitNumber)
|
function OPSGROUP:GetUnit(UnitNumber)
|
||||||
local DCSGroup=Group.getByName(self.groupname)
|
|
||||||
return DCSGroup
|
local DCSUnit=self:GetDCSUnit(UnitNumber)
|
||||||
|
|
||||||
|
if DCSUnit then
|
||||||
|
local unit=UNIT:Find(DCSUnit)
|
||||||
|
return unit
|
||||||
|
end
|
||||||
|
|
||||||
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Get DCS GROUP object.
|
--- Get DCS GROUP object.
|
||||||
@ -515,15 +523,68 @@ function OPSGROUP:GetDCSUnit(UnitNumber)
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Despawn group.
|
--- Get DCS units.
|
||||||
-- @param #OPSGROUP self
|
-- @param #OPSGROUP self
|
||||||
-- @return #OPSGROUP self
|
-- @return #list<DCS#Unit> DCS units.
|
||||||
function OPSGROUP:DespawnGroup()
|
function OPSGROUP:GetDCSUnits()
|
||||||
|
|
||||||
local DCSGroup=self:GetDCSGroup()
|
local DCSGroup=self:GetDCSGroup()
|
||||||
|
|
||||||
if DCSGroup then
|
if DCSGroup then
|
||||||
|
local units=DCSGroup:getUnits()
|
||||||
|
return units
|
||||||
|
end
|
||||||
|
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Despawn the group. The whole group is despawned and (optionally) a "Remove Unit" event is generated for all current units of the group.
|
||||||
|
-- @param #OPSGROUP self
|
||||||
|
-- @return #OPSGROUP self
|
||||||
|
function OPSGROUP:Despawn()
|
||||||
|
|
||||||
|
local DCSGroup=self:GetDCSGroup()
|
||||||
|
|
||||||
|
if DCSGroup then
|
||||||
|
|
||||||
|
-- Destroy DCS group.
|
||||||
DCSGroup:destroy()
|
DCSGroup:destroy()
|
||||||
|
|
||||||
|
-- Get all units.
|
||||||
|
local units=self:GetDCSUnits()
|
||||||
|
|
||||||
|
-- Create a "Remove Unit" event.
|
||||||
|
local EventTime=timer.getTime()
|
||||||
|
for i=1,#units do
|
||||||
|
self:CreateEventRemoveUnit(EventTime, units[i])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Destroy group. The whole group is despawned and a "Unit Lost" event is generated for all current units.
|
||||||
|
-- @param #OPSGROUP self
|
||||||
|
-- @return #OPSGROUP self
|
||||||
|
function OPSGROUP:Destroy()
|
||||||
|
|
||||||
|
local DCSGroup=self:GetDCSGroup()
|
||||||
|
|
||||||
|
if DCSGroup then
|
||||||
|
|
||||||
|
self:I(self.lid.."Destroying group ")
|
||||||
|
|
||||||
|
-- Destroy DCS group.
|
||||||
|
DCSGroup:destroy()
|
||||||
|
|
||||||
|
-- Get all units.
|
||||||
|
local units=self:GetDCSUnits()
|
||||||
|
|
||||||
|
-- Create a "Unit Lost" event.
|
||||||
|
local EventTime=timer.getTime()
|
||||||
|
for i=1,#units do
|
||||||
|
self:CreateEventUnitLost(EventTime, units[i])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return self
|
return self
|
||||||
@ -538,6 +599,7 @@ function OPSGROUP:DespawnUnit(UnitName)
|
|||||||
|
|
||||||
if DCSGroup then
|
if DCSGroup then
|
||||||
DCSGroup:destroy()
|
DCSGroup:destroy()
|
||||||
|
self:CreateEventRemoveUnit(timer.getTime(), DCSObject)
|
||||||
end
|
end
|
||||||
|
|
||||||
return self
|
return self
|
||||||
@ -2347,7 +2409,7 @@ function OPSGROUP:_QueueUpdate()
|
|||||||
---
|
---
|
||||||
|
|
||||||
-- First check if group is alive? Late activated groups are activated and uncontrolled units are started automatically.
|
-- First check if group is alive? Late activated groups are activated and uncontrolled units are started automatically.
|
||||||
if self:IsAlive()~=nil then
|
if self:IsExist() then
|
||||||
|
|
||||||
local mission=self:_GetNextMission()
|
local mission=self:_GetNextMission()
|
||||||
|
|
||||||
@ -2564,6 +2626,67 @@ function OPSGROUP:onafterLeaveZone(From, Event, To, Zone)
|
|||||||
self.inzones:Remove(zonename, true)
|
self.inzones:Remove(zonename, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- On after "ElementDestroyed" event.
|
||||||
|
-- @param #OPSGROUP self
|
||||||
|
-- @param #string From From state.
|
||||||
|
-- @param #string Event Event.
|
||||||
|
-- @param #string To To state.
|
||||||
|
-- @param #OPSGROUP.Element Element The flight group element.
|
||||||
|
function OPSGROUP:onafterElementDestroyed(From, Event, To, Element)
|
||||||
|
self:I(self.lid..string.format("Element destroyed %s", Element.name))
|
||||||
|
|
||||||
|
-- Cancel all missions.
|
||||||
|
for _,_mission in pairs(self.missionqueue) do
|
||||||
|
local mission=_mission --Ops.Auftrag#AUFTRAG
|
||||||
|
|
||||||
|
mission:ElementDestroyed(self, Element)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Set element status.
|
||||||
|
self:_UpdateStatus(Element, OPSGROUP.ElementStatus.DEAD)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
--- On after "ElementDead" event.
|
||||||
|
-- @param #OPSGROUP self
|
||||||
|
-- @param #string From From state.
|
||||||
|
-- @param #string Event Event.
|
||||||
|
-- @param #string To To state.
|
||||||
|
-- @param #OPSGROUP.Element Element The flight group element.
|
||||||
|
function OPSGROUP:onafterElementDead(From, Event, To, Element)
|
||||||
|
self:I(self.lid..string.format("Element dead %s", Element.name))
|
||||||
|
|
||||||
|
-- Set element status.
|
||||||
|
self:_UpdateStatus(Element, OPSGROUP.ElementStatus.DEAD)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- On after "Dead" event.
|
||||||
|
-- @param #OPSGROUP self
|
||||||
|
-- @param #string From From state.
|
||||||
|
-- @param #string Event Event.
|
||||||
|
-- @param #string To To state.
|
||||||
|
function OPSGROUP:onafterDead(From, Event, To)
|
||||||
|
self:T(self.lid..string.format("Flight dead!"))
|
||||||
|
|
||||||
|
-- Delete waypoints so they are re-initialized at the next spawn.
|
||||||
|
self.waypoints=nil
|
||||||
|
self.groupinitialized=false
|
||||||
|
|
||||||
|
-- Cancel all missions.
|
||||||
|
for _,_mission in pairs(self.missionqueue) do
|
||||||
|
local mission=_mission --Ops.Auftrag#AUFTRAG
|
||||||
|
|
||||||
|
self:MissionCancel(mission)
|
||||||
|
mission:GroupDead(self)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Stop
|
||||||
|
self:Stop()
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- Internal Check Functions
|
-- Internal Check Functions
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -3427,6 +3550,7 @@ function OPSGROUP:GetTACAN()
|
|||||||
return self.tacan.Channel, self.tacan.Morse, self.tacan.Band, self.tacan.On, self.tacan.BeaconName
|
return self.tacan.Channel, self.tacan.Morse, self.tacan.Band, self.tacan.On, self.tacan.BeaconName
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Activate/switch ICLS beacon settings.
|
--- Activate/switch ICLS beacon settings.
|
||||||
-- @param #OPSGROUP self
|
-- @param #OPSGROUP self
|
||||||
-- @param #OPSGROUP.Beacon Icls ICLS data table.
|
-- @param #OPSGROUP.Beacon Icls ICLS data table.
|
||||||
@ -3628,6 +3752,8 @@ function OPSGROUP:TurnOffRadio()
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Set default formation.
|
--- Set default formation.
|
||||||
-- @param #OPSGROUP self
|
-- @param #OPSGROUP self
|
||||||
-- @param #number Formation The formation the groups flies in.
|
-- @param #number Formation The formation the groups flies in.
|
||||||
@ -3673,6 +3799,8 @@ function OPSGROUP:SwitchFormation(Formation)
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Set default formation.
|
--- Set default formation.
|
||||||
-- @param #OPSGROUP self
|
-- @param #OPSGROUP self
|
||||||
-- @param #number CallsignName Callsign name.
|
-- @param #number CallsignName Callsign name.
|
||||||
|
|||||||
@ -17,7 +17,6 @@
|
|||||||
--- SQUADRON class.
|
--- SQUADRON class.
|
||||||
-- @type SQUADRON
|
-- @type SQUADRON
|
||||||
-- @field #string ClassName Name of the class.
|
-- @field #string ClassName Name of the class.
|
||||||
-- @field #boolean Debug Debug mode. Messages to all about status.
|
|
||||||
-- @field #number verbose Verbosity level.
|
-- @field #number verbose Verbosity level.
|
||||||
-- @field #string lid Class id string for output to DCS log file.
|
-- @field #string lid Class id string for output to DCS log file.
|
||||||
-- @field #string name Name of the squadron.
|
-- @field #string name Name of the squadron.
|
||||||
@ -63,8 +62,7 @@
|
|||||||
-- @field #SQUADRON
|
-- @field #SQUADRON
|
||||||
SQUADRON = {
|
SQUADRON = {
|
||||||
ClassName = "SQUADRON",
|
ClassName = "SQUADRON",
|
||||||
Debug = nil,
|
verbose = 3,
|
||||||
verbose = 0,
|
|
||||||
lid = nil,
|
lid = nil,
|
||||||
name = nil,
|
name = nil,
|
||||||
templatename = nil,
|
templatename = nil,
|
||||||
@ -199,7 +197,6 @@ function SQUADRON:New(TemplateGroupName, Ngroups, SquadronName)
|
|||||||
|
|
||||||
-- Debug trace.
|
-- Debug trace.
|
||||||
if false then
|
if false then
|
||||||
self.Debug=true
|
|
||||||
BASE:TraceOnOff(true)
|
BASE:TraceOnOff(true)
|
||||||
BASE:TraceClass(self.ClassName)
|
BASE:TraceClass(self.ClassName)
|
||||||
BASE:TraceLevel(1)
|
BASE:TraceLevel(1)
|
||||||
@ -658,7 +655,7 @@ function SQUADRON:_CheckAssetStatus()
|
|||||||
local asset=_asset --Ops.AirWing#AIRWING.SquadronAsset
|
local asset=_asset --Ops.AirWing#AIRWING.SquadronAsset
|
||||||
|
|
||||||
-- Text.
|
-- Text.
|
||||||
text=text..string.format("\n-[%d] %s*%d: ", j, asset.unittype, asset.nunits)
|
text=text..string.format("\n-[%d] %s (%s*%d): ", j, asset.spawngroupname, asset.unittype, asset.nunits)
|
||||||
|
|
||||||
if asset.spawned then
|
if asset.spawned then
|
||||||
|
|
||||||
@ -670,7 +667,7 @@ function SQUADRON:_CheckAssetStatus()
|
|||||||
local mission=self.airwing and self.airwing:GetAssetCurrentMission(asset) or false
|
local mission=self.airwing and self.airwing:GetAssetCurrentMission(asset) or false
|
||||||
if mission then
|
if mission then
|
||||||
local distance=asset.flightgroup and UTILS.MetersToNM(mission:GetTargetDistance(asset.flightgroup.group:GetCoordinate())) or 0
|
local distance=asset.flightgroup and UTILS.MetersToNM(mission:GetTargetDistance(asset.flightgroup.group:GetCoordinate())) or 0
|
||||||
text=text..string.format(" Mission %s - %s: Status=%s, Dist=%.1f NM", mission.name, mission.type, mission.status, distance)
|
text=text..string.format("Mission %s - %s: Status=%s, Dist=%.1f NM", mission.name, mission.type, mission.status, distance)
|
||||||
else
|
else
|
||||||
text=text.."Mission None"
|
text=text.."Mission None"
|
||||||
end
|
end
|
||||||
@ -708,15 +705,24 @@ function SQUADRON:_CheckAssetStatus()
|
|||||||
---
|
---
|
||||||
-- In Stock
|
-- In Stock
|
||||||
---
|
---
|
||||||
|
|
||||||
|
text=text..string.format("In Stock")
|
||||||
|
|
||||||
|
if self:IsRepaired(asset) then
|
||||||
|
text=text.." and Combat Ready"
|
||||||
|
else
|
||||||
|
|
||||||
|
text=text..string.format(", Repaired in %d sec", self:GetRepairTime(asset))
|
||||||
|
|
||||||
|
if asset.damage then
|
||||||
|
text=text..string.format(" (Damage=%.1f)", asset.damage)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if asset.Treturned then
|
if asset.Treturned then
|
||||||
local T=timer.getAbsTime()-asset.Treturned
|
local T=timer.getAbsTime()-asset.Treturned
|
||||||
text=text..string.format(" Treturn=%d sec", T)
|
text=text..string.format(", Returned for %d sec", T)
|
||||||
end
|
end
|
||||||
if asset.damage then
|
|
||||||
text=text..string.format(" Damage=%.1f", asset.damage)
|
|
||||||
end
|
|
||||||
text=text..string.format(" Repaired=%s T=%d sec", tostring(self:IsRepaired(asset)), self:GetRepairTime(asset))
|
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user