From b6bc22f991f6fd281e973eec1c89ba0ba99f7a76 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 15 Jul 2020 00:51:27 +0200 Subject: [PATCH] Squadron Grouping --- Moose Development/Moose/Functional/Warehouse.lua | 9 +-------- Moose Development/Moose/Ops/AirWing.lua | 13 ++++++++----- Moose Development/Moose/Ops/Squadron.lua | 11 +++++++++++ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/Moose Development/Moose/Functional/Warehouse.lua b/Moose Development/Moose/Functional/Warehouse.lua index 0bda377f2..297082e22 100644 --- a/Moose Development/Moose/Functional/Warehouse.lua +++ b/Moose Development/Moose/Functional/Warehouse.lua @@ -5798,19 +5798,12 @@ function WAREHOUSE:_SpawnAssetPrepareTemplate(asset, alias) template.route = {} template.route.routeRelativeTOT=true template.route.points = {} - - local N=asset.grouping or #template.units -- Handle units. - for i=1,N do + for i=1,#template.units do -- Unit template. local unit = template.units[i] - - -- If more units are in the - if i>#template.units then - unit=UTILS.DeepCopy(template.units[1]) - end -- Nillify the unit ID. unit.unitId=nil diff --git a/Moose Development/Moose/Ops/AirWing.lua b/Moose Development/Moose/Ops/AirWing.lua index e62ac4563..644d58caa 100644 --- a/Moose Development/Moose/Ops/AirWing.lua +++ b/Moose Development/Moose/Ops/AirWing.lua @@ -1455,9 +1455,11 @@ function AIRWING:onafterNewAsset(From, Event, To, asset, assignment) if squad then if asset.assignment==assignment then + + local nunits=#asset.template.units -- Debug text. - local text=string.format("Adding asset to squadron %s: assignment=%s, type=%s, attribute=%s", squad.name, assignment, asset.unittype, asset.attribute) + local text=string.format("Adding asset to squadron %s: assignment=%s, type=%s, attribute=%s, nunits=%d %s", squad.name, assignment, asset.unittype, asset.attribute, nunits, tostring(squad.ngrouping)) self:I(self.lid..text) -- Create callsign and modex. @@ -1476,12 +1478,13 @@ function AIRWING:onafterNewAsset(From, Event, To, asset, assignment) local unit = template.units[i] -- If grouping is larger than units present, copy first unit. - if i>#template.units then - unit=UTILS.DeepCopy(template.units[1]) + if i>nunits then + --unit=UTILS.DeepCopy(template.units[1]) + table.insert(template.units, UTILS.DeepCopy(template.units[1])) end - --Remove units if original template contains more than in grouping. - if squad.ngrouping<#template.units and i>#template.units then + -- Remove units if original template contains more than in grouping. + if squad.ngroupingnunits then unit=nil end end diff --git a/Moose Development/Moose/Ops/Squadron.lua b/Moose Development/Moose/Ops/Squadron.lua index d1e1bd1c4..a118a878b 100644 --- a/Moose Development/Moose/Ops/Squadron.lua +++ b/Moose Development/Moose/Ops/Squadron.lua @@ -245,6 +245,17 @@ function SQUADRON:SetRadio(Frequency, Modulation) return self end +--- Set number of units in groups. +-- @param #SQUADRON self +-- @param #nunits Number of units. Must be >=1 and <=4. Default 2. +-- @return #SQUADRON self +function SQUADRON:SetGrouping(nunits) + self.grouping=nunits or 2 + if self.grouping<1 then self.grouping=1 end + if self.grouping>4 then self.grouping=4 end + return self +end + --- Set mission types this squadron is able to perform. -- @param #SQUADRON self -- @param #table MissionTypes Table of mission types. Can also be passed as a #string if only one type.