2025-07-22 10:22:50 +02:00

71 lines
2.2 KiB
Lua

Library.factions = {}
Library.factions.defaults = { "USA", "Russia" }
Library.factions.tables = {}
--{{FACTIONS}}--
-- If default red faction is "Russia" and "Russia" is named "USSR" in this time period, change its name in the default
if Library.factions.tables["USSR"] and Library.factions.defaults[coalition.side.RED] == "Russia" then
Library.factions.defaults[coalition.side.RED] = "USSR"
end
function Library.factions.getUnits(faction, unitFamilies, count, singleType)
singleType = singleType or false
local timePeriod = TUM.settings.getValue(TUM.settings.id.TIME_PERIOD)
if not unitFamilies then return nil end
if not Library.factions.tables[faction] then return nil end
if not Library.factions.tables[faction].units then return nil end
if not Library.factions.tables[faction].units[timePeriod] then return nil end
if type(unitFamilies) == "number" then unitFamilies = { unitFamilies } end
count = math.max(1, count or 1)
local validUnits = {}
for _,f in ipairs(unitFamilies) do
local unitList = Library.factions.tables[faction].units[timePeriod][f]
if unitList and #unitList > 0 then
for __,u in ipairs(unitList) do
if not DCSEx.table.contains(validUnits, u) then
table.insert(validUnits, u)
end
end
end
end
if #validUnits == 0 then return nil end
local selectedUnits = {}
if singleType then
local unitType = DCSEx.table.getRandom(validUnits)
for _=1,count do
table.insert(selectedUnits, unitType)
end
else
for _=1,count do
table.insert(selectedUnits, DCSEx.table.getRandom(validUnits))
end
end
return selectedUnits
end
do
-- local function mergeFactions()
-- end
-- local function setDefaultUnitsIfMissing(unitTypes, defaults)
-- if not unitTypes or #unitTypes == 0 then
-- return defaults
-- end
-- return unitTypes
-- end
-- for k,_ in pairs(Library.factions) do
-- if not Library.factions[k][DCSEx.enums.unitFamily.SHIP_CARGO] = { "Dry-cargo ship-1", "Dry-cargo ship-2", "ELNYA", "Ship_Tilde_Supply" },
-- end
end