mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2026-08-20 17:07:54 +00:00
Merge remote-tracking branch 'origin/master-ng' into branch
# Conflicts: # Moose Development/Moose/Ops/TARS.lua
This commit is contained in:
@@ -2178,15 +2178,43 @@ function SPAWN:SpawnAtAirbase( SpawnAirbase, Takeoff, TakeoffAltitude, TerminalT
|
|||||||
local scanscenery = false
|
local scanscenery = false
|
||||||
local verysafe = false
|
local verysafe = false
|
||||||
|
|
||||||
|
-- Use exact parking data when provided, otherwise let helicopters on ships/FARPs
|
||||||
|
-- use the smarter parking search before falling back to the procedural queue path.
|
||||||
|
local useexplicitspots = false
|
||||||
|
|
||||||
-- Number of free parking spots at the airbase.
|
-- Number of free parking spots at the airbase.
|
||||||
if autoparking then
|
if Parkingdata~=nil then
|
||||||
|
-- Parking data explicitly set by user as input parameter.
|
||||||
|
nfree = #Parkingdata
|
||||||
|
spots = Parkingdata
|
||||||
|
useexplicitspots = true
|
||||||
|
elseif autoparking and AirbaseCategory == Airbase.Category.HELIPAD and ishelo then
|
||||||
|
if termtype == nil then
|
||||||
|
-- Helo is spawned. Try exclusive helo spots first.
|
||||||
|
spots = SpawnAirbase:FindFreeParkingSpotForAircraft( group, AIRBASE.TerminalType.HelicopterOnly, scanradius, scanunits, scanstatics, scanscenery, verysafe, nunits, nil )
|
||||||
|
nfree = #spots
|
||||||
|
if nfree < nunits then
|
||||||
|
-- Not enough helo ports. Let's try also other terminal types.
|
||||||
|
spots = SpawnAirbase:FindFreeParkingSpotForAircraft( group, AIRBASE.TerminalType.HelicopterUsable, scanradius, scanunits, scanstatics, scanscenery, verysafe, nunits, nil )
|
||||||
|
nfree = #spots
|
||||||
|
end
|
||||||
|
else
|
||||||
|
-- Terminal type explicitly given.
|
||||||
|
spots = SpawnAirbase:FindFreeParkingSpotForAircraft( group, termtype, scanradius, scanunits, scanstatics, scanscenery, verysafe, nunits, nil )
|
||||||
|
nfree = #spots
|
||||||
|
end
|
||||||
|
|
||||||
|
if nfree >= nunits then
|
||||||
|
useexplicitspots = true
|
||||||
|
else
|
||||||
|
-- These places work procedural and have some kind of build in queue ==> Less effort.
|
||||||
|
nfree = SpawnAirbase:GetFreeParkingSpotsNumber( termtype, true )
|
||||||
|
spots = SpawnAirbase:GetFreeParkingSpotsTable( termtype, true )
|
||||||
|
end
|
||||||
|
elseif autoparking then
|
||||||
-- These places work procedural and have some kind of build in queue ==> Less effort.
|
-- These places work procedural and have some kind of build in queue ==> Less effort.
|
||||||
nfree = SpawnAirbase:GetFreeParkingSpotsNumber( termtype, true )
|
nfree = SpawnAirbase:GetFreeParkingSpotsNumber( termtype, true )
|
||||||
spots = SpawnAirbase:GetFreeParkingSpotsTable( termtype, true )
|
spots = SpawnAirbase:GetFreeParkingSpotsTable( termtype, true )
|
||||||
elseif Parkingdata~=nil then
|
|
||||||
-- Parking data explicitly set by user as input parameter. (This was commented out for some unknown reason. But I need it this way.)
|
|
||||||
nfree=#Parkingdata
|
|
||||||
spots=Parkingdata
|
|
||||||
else
|
else
|
||||||
if ishelo then
|
if ishelo then
|
||||||
if termtype == nil then
|
if termtype == nil then
|
||||||
@@ -2238,7 +2266,7 @@ function SPAWN:SpawnAtAirbase( SpawnAirbase, Takeoff, TakeoffAltitude, TerminalT
|
|||||||
local _notenough = false
|
local _notenough = false
|
||||||
|
|
||||||
-- Need to differentiate some cases again.
|
-- Need to differentiate some cases again.
|
||||||
if autoparking then
|
if autoparking and not useexplicitspots then
|
||||||
|
|
||||||
-- On free spot required in these cases.
|
-- On free spot required in these cases.
|
||||||
if nfree >= 1 then
|
if nfree >= 1 then
|
||||||
@@ -2582,21 +2610,51 @@ function SPAWN:ParkAircraft( SpawnAirbase, TerminalType, Parkingdata, SpawnIndex
|
|||||||
local scanscenery = false
|
local scanscenery = false
|
||||||
local verysafe = false
|
local verysafe = false
|
||||||
|
|
||||||
-- Number of free parking spots at the airbase.
|
-- Use exact parking data when provided, otherwise let helicopters on FARPs
|
||||||
if spawnonship or spawnonfarp or spawnonrunway then
|
-- use the smarter parking search before falling back to the procedural queue path.
|
||||||
-- These places work procedural and have some kind of build in queue ==> Less effort.
|
local useexplicitspots = false
|
||||||
--self:T2( string.format( "Group %s is spawned on farp/ship/runway %s.", self.SpawnTemplatePrefix, SpawnAirbase:GetName() ) )
|
|
||||||
nfree = SpawnAirbase:GetFreeParkingSpotsNumber( termtype, true )
|
-- Number of free parking spots at the airbase.
|
||||||
spots = SpawnAirbase:GetFreeParkingSpotsTable( termtype, true )
|
if Parkingdata~=nil then
|
||||||
--[[
|
-- Parking data explicitly set by user as input parameter.
|
||||||
elseif Parkingdata~=nil then
|
nfree = #Parkingdata
|
||||||
-- Parking data explicitly set by user as input parameter.
|
spots = Parkingdata
|
||||||
nfree=#Parkingdata
|
useexplicitspots = true
|
||||||
spots=Parkingdata
|
elseif spawnonfarp and ishelo then
|
||||||
]]
|
|
||||||
else
|
|
||||||
if ishelo then
|
|
||||||
if termtype == nil then
|
if termtype == nil then
|
||||||
|
-- Helo is spawned. Try exclusive helo spots first.
|
||||||
|
--self:T2( string.format( "Helo group %s is at %s using terminal type %d.", self.SpawnTemplatePrefix, SpawnAirbase:GetName(), AIRBASE.TerminalType.HelicopterOnly ) )
|
||||||
|
spots = SpawnAirbase:FindFreeParkingSpotForAircraft( TemplateGroup, AIRBASE.TerminalType.HelicopterOnly, scanradius, scanunits, scanstatics, scanscenery, verysafe, nunits, nil )
|
||||||
|
nfree = #spots
|
||||||
|
if nfree < nunits then
|
||||||
|
-- Not enough helo ports. Let's try also other terminal types.
|
||||||
|
--self:T2( string.format( "Helo group %s is at %s using terminal type %d.", self.SpawnTemplatePrefix, SpawnAirbase:GetName(), AIRBASE.TerminalType.HelicopterUsable ) )
|
||||||
|
spots = SpawnAirbase:FindFreeParkingSpotForAircraft( TemplateGroup, AIRBASE.TerminalType.HelicopterUsable, scanradius, scanunits, scanstatics, scanscenery, verysafe, nunits, nil )
|
||||||
|
nfree = #spots
|
||||||
|
end
|
||||||
|
else
|
||||||
|
-- Terminal type explicitly given.
|
||||||
|
--self:T2( string.format( "Helo group %s is at %s using terminal type %d.", self.SpawnTemplatePrefix, SpawnAirbase:GetName(), termtype ) )
|
||||||
|
spots = SpawnAirbase:FindFreeParkingSpotForAircraft( TemplateGroup, termtype, scanradius, scanunits, scanstatics, scanscenery, verysafe, nunits, nil )
|
||||||
|
nfree = #spots
|
||||||
|
end
|
||||||
|
|
||||||
|
if nfree >= nunits then
|
||||||
|
useexplicitspots = true
|
||||||
|
else
|
||||||
|
-- These places work procedural and have some kind of build in queue ==> Less effort.
|
||||||
|
--self:T2( string.format( "Group %s is spawned on farp %s using procedural spots.", self.SpawnTemplatePrefix, SpawnAirbase:GetName() ) )
|
||||||
|
nfree = SpawnAirbase:GetFreeParkingSpotsNumber( termtype, true )
|
||||||
|
spots = SpawnAirbase:GetFreeParkingSpotsTable( termtype, true )
|
||||||
|
end
|
||||||
|
elseif spawnonship or spawnonfarp or spawnonrunway then
|
||||||
|
-- These places work procedural and have some kind of build in queue ==> Less effort.
|
||||||
|
--self:T2( string.format( "Group %s is spawned on farp/ship/runway %s.", self.SpawnTemplatePrefix, SpawnAirbase:GetName() ) )
|
||||||
|
nfree = SpawnAirbase:GetFreeParkingSpotsNumber( termtype, true )
|
||||||
|
spots = SpawnAirbase:GetFreeParkingSpotsTable( termtype, true )
|
||||||
|
else
|
||||||
|
if ishelo then
|
||||||
|
if termtype == nil then
|
||||||
-- Helo is spawned. Try exclusive helo spots first.
|
-- Helo is spawned. Try exclusive helo spots first.
|
||||||
--self:T2( string.format( "Helo group %s is at %s using terminal type %d.", self.SpawnTemplatePrefix, SpawnAirbase:GetName(), AIRBASE.TerminalType.HelicopterOnly ) )
|
--self:T2( string.format( "Helo group %s is at %s using terminal type %d.", self.SpawnTemplatePrefix, SpawnAirbase:GetName(), AIRBASE.TerminalType.HelicopterOnly ) )
|
||||||
spots = SpawnAirbase:FindFreeParkingSpotForAircraft( TemplateGroup, AIRBASE.TerminalType.HelicopterOnly, scanradius, scanunits, scanstatics, scanscenery, verysafe, nunits, Parkingdata )
|
spots = SpawnAirbase:FindFreeParkingSpotForAircraft( TemplateGroup, AIRBASE.TerminalType.HelicopterOnly, scanradius, scanunits, scanstatics, scanscenery, verysafe, nunits, Parkingdata )
|
||||||
@@ -2659,7 +2717,7 @@ function SPAWN:ParkAircraft( SpawnAirbase, TerminalType, Parkingdata, SpawnIndex
|
|||||||
local _notenough = false
|
local _notenough = false
|
||||||
|
|
||||||
-- Need to differentiate some cases again.
|
-- Need to differentiate some cases again.
|
||||||
if spawnonship or spawnonfarp or spawnonrunway then
|
if (spawnonship or spawnonfarp or spawnonrunway) and not useexplicitspots then
|
||||||
|
|
||||||
-- On free spot required in these cases.
|
-- On free spot required in these cases.
|
||||||
if nfree >= 1 then
|
if nfree >= 1 then
|
||||||
|
|||||||
@@ -504,6 +504,9 @@ CSAR.AircraftType["OH58D"] = 2
|
|||||||
CSAR.AircraftType["CH-47Fbl1"] = 31
|
CSAR.AircraftType["CH-47Fbl1"] = 31
|
||||||
CSAR.AircraftType["AH-6J"] = 2
|
CSAR.AircraftType["AH-6J"] = 2
|
||||||
CSAR.AircraftType["MH-6J"] = 2
|
CSAR.AircraftType["MH-6J"] = 2
|
||||||
|
CSAR.AircraftType["Ka-50_3"] = 0
|
||||||
|
CSAR.AircraftType["Ka-50"] = 0
|
||||||
|
CSAR.AircraftType["AV8BNA"] = 0
|
||||||
|
|
||||||
--- CSAR class version.
|
--- CSAR class version.
|
||||||
-- @field #string version
|
-- @field #string version
|
||||||
@@ -2538,8 +2541,11 @@ function CSAR:_AddMedevacMenuItem()
|
|||||||
if _unit then
|
if _unit then
|
||||||
--self:T("Unitname ".._unit:GetName().." IsAlive "..tostring(_unit:IsAlive()).." IsPlayer "..tostring(_unit:IsPlayer()))
|
--self:T("Unitname ".._unit:GetName().." IsAlive "..tostring(_unit:IsAlive()).." IsPlayer "..tostring(_unit:IsPlayer()))
|
||||||
if _unit:IsAlive() and _unit:IsPlayer() then
|
if _unit:IsAlive() and _unit:IsPlayer() then
|
||||||
local unitName = _unit:GetName()
|
local _maxUnits = self.AircraftType[_unit:GetTypeName()]
|
||||||
_UnitList[unitName] = unitName
|
if _maxUnits == nil or _maxUnits > 0 then
|
||||||
|
local unitName = _unit:GetName()
|
||||||
|
_UnitList[unitName] = unitName
|
||||||
|
end
|
||||||
end -- end isAlive
|
end -- end isAlive
|
||||||
end -- end if _unit
|
end -- end if _unit
|
||||||
end -- end for
|
end -- end for
|
||||||
|
|||||||
@@ -1620,7 +1620,7 @@ function MSRS:PlayText(Text, Delay, Coordinate, Speed, Speaker)
|
|||||||
else
|
else
|
||||||
|
|
||||||
local speaker = Speaker or self.Speaker
|
local speaker = Speaker or self.Speaker
|
||||||
|
|
||||||
if self.backend==MSRS.Backend.GRPC then
|
if self.backend==MSRS.Backend.GRPC then
|
||||||
self:T(self.lid.."Transmitting")
|
self:T(self.lid.."Transmitting")
|
||||||
self:_DCSgRPCtts(Text, nil, nil , nil, nil, nil, nil, Coordinate)
|
self:_DCSgRPCtts(Text, nil, nil , nil, nil, nil, nil, Coordinate)
|
||||||
@@ -2103,19 +2103,16 @@ function MSRS:_HoundTextToSpeech(Message,Frequencies,Modulations,Volume,Label,Co
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
Frequencies = UTILS.EnsureTable(Frequencies)
|
Frequencies = UTILS.EnsureTable(Frequencies or self.frequencies)
|
||||||
Modulations = UTILS.EnsureTable(Modulations)
|
Modulations = UTILS.EnsureTable(Modulations or self.modulations)
|
||||||
|
|
||||||
local ffs = {}
|
local ffs = {}
|
||||||
for _,_f in pairs(Frequencies or self.frequencies) do
|
for _,_f in pairs(Frequencies) do
|
||||||
table.insert(ffs,string.format("%.1f",_f))
|
table.insert(ffs,string.format("%.1f",_f))
|
||||||
end
|
end
|
||||||
|
|
||||||
local freqs = table.concat(ffs, ",")
|
local freqs = table.concat(ffs, ",")
|
||||||
|
local modus = table.concat(Modulations, ",")
|
||||||
|
|
||||||
|
|
||||||
local modus = table.concat(Modulations or self.modulations, ",")
|
|
||||||
|
|
||||||
local coal=Coalition or self.coalition
|
local coal=Coalition or self.coalition
|
||||||
local gender=Gender or self.gender
|
local gender=Gender or self.gender
|
||||||
@@ -2159,7 +2156,7 @@ function MSRS:_HoundTextToSpeech(Message,Frequencies,Modulations,Volume,Label,Co
|
|||||||
gender = gender,
|
gender = gender,
|
||||||
speaker = Speaker or self.Speaker,
|
speaker = Speaker or self.Speaker,
|
||||||
}
|
}
|
||||||
|
|
||||||
local speechtime = HoundTTS.Transmit(Message, TransmissionP, ProviderP)
|
local speechtime = HoundTTS.Transmit(Message, TransmissionP, ProviderP)
|
||||||
|
|
||||||
return speechtime
|
return speechtime
|
||||||
|
|||||||
Reference in New Issue
Block a user