Merge branch 'new-wingman-system'

This commit is contained in:
Ambroise Garel
2025-07-23 22:21:10 +02:00
8 changed files with 218 additions and 3 deletions
@@ -198,6 +198,28 @@ do
return callsignTable
end
function DCSEx.unitCallsignMaker.getNextGroupCallSign(callsign)
if not callsign then return nil end
local callsignName = callsign:sub(1, #callsign - 2):lower()
local callsignGroupNumber = tonumber(callsign:sub(#callsign - 2, #callsign - 1))
local callsignUnitNumber = tonumber(callsign:sub(#callsign - 1, #callsign))
for csType,_ in pairs(CALLSIGNS) do
for csNameIndex,_ in pairs(CALLSIGNS[csType]) do
if CALLSIGNS[csType][csNameIndex]:lower() == callsignName then
return {
[1] = csNameIndex,
[2] = callsignGroupNumber,
[3] = callsignUnitNumber,
["name"] = CALLSIGNS[csType][csNameIndex]..tostring(callsignGroupNumber),
}
end
end
end
return nil
end
do
local missionGroups = DCSEx.envMission.getGroups()
for _,g in ipairs(missionGroups) do
+25 -1
View File
@@ -101,6 +101,26 @@ do
return groupTable
end
local function setAircraftTaskFollow(groupTable, followedGroupID)
groupTable.task = "Escort"
table.insert(groupTable.route.points[1].task.params.tasks,
{
["enabled"] = true,
["auto"] = true,
["id"] = "Follow",
["number"] = #groupTable.route.points[1].task.params.tasks + 1,
["params"] = {
groupId = followedGroupID,
pos = { x = -100, y = 0, z = -100 },
lastWptIndexFlag = false,
lastWptIndex = -1
},
})
return groupTable
end
local function setAircraftTaskOrbit(groupTable, options)
-- TODO: oval orbit
table.insert(groupTable.route.points[#groupTable.route.points].task.params.tasks,
@@ -341,7 +361,11 @@ do
if isAirUnit then
if options.taskAwacs then setAircraftTaskAwacs(groupTable) end
if options.taskCAP then setAircraftTaskCAP(groupTable) end
setAircraftTaskOrbit(groupTable, options)
if options.taskFollow then
setAircraftTaskFollow(groupTable, options.taskFollow)
else
setAircraftTaskOrbit(groupTable, options)
end
groupCallsign = DCSEx.unitCallsignMaker.getCallsign(unitTypes[1])
groupTable.name = groupCallsign.name
end