mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Merge pull request #109 from FlightControl-Master/Bugfix
Fixed SPAWN bug, where the amount of units spawned would exceed the Limit() parameters.
This commit is contained in:
commit
ca50a0af29
@ -503,7 +503,7 @@ function EVENT:onEvent( Event )
|
|||||||
self:E( { _EVENTCODES[Event.id], Event.IniUnitName, Event.TgtUnitName, Event.WeaponName } )
|
self:E( { _EVENTCODES[Event.id], Event.IniUnitName, Event.TgtUnitName, Event.WeaponName } )
|
||||||
for ClassName, EventData in pairs( self.Events[Event.id] ) do
|
for ClassName, EventData in pairs( self.Events[Event.id] ) do
|
||||||
if Event.IniDCSUnitName and EventData.IniUnit and EventData.IniUnit[Event.IniDCSUnitName] then
|
if Event.IniDCSUnitName and EventData.IniUnit and EventData.IniUnit[Event.IniDCSUnitName] then
|
||||||
self:E( { "Calling event function for class ", ClassName, " unit ", Event.IniDCSUnitName } )
|
self:E( { "Calling event function for class ", ClassName, " unit ", Event.IniUnitName } )
|
||||||
EventData.IniUnit[Event.IniDCSUnitName].EventFunction( EventData.IniUnit[Event.IniDCSUnitName].EventSelf, Event )
|
EventData.IniUnit[Event.IniDCSUnitName].EventFunction( EventData.IniUnit[Event.IniDCSUnitName].EventSelf, Event )
|
||||||
else
|
else
|
||||||
if Event.IniDCSUnit and not EventData.IniUnit then
|
if Event.IniDCSUnit and not EventData.IniUnit then
|
||||||
|
|||||||
@ -80,6 +80,10 @@
|
|||||||
-- @field ClassName
|
-- @field ClassName
|
||||||
-- @field #string SpawnTemplatePrefix
|
-- @field #string SpawnTemplatePrefix
|
||||||
-- @field #string SpawnAliasPrefix
|
-- @field #string SpawnAliasPrefix
|
||||||
|
-- @field #number AliveUnits
|
||||||
|
-- @field #number MaxAliveUnits
|
||||||
|
-- @field #number SpawnIndex
|
||||||
|
-- @field #number MaxAliveGroups
|
||||||
SPAWN = {
|
SPAWN = {
|
||||||
ClassName = "SPAWN",
|
ClassName = "SPAWN",
|
||||||
SpawnTemplatePrefix = nil,
|
SpawnTemplatePrefix = nil,
|
||||||
@ -396,7 +400,7 @@ end
|
|||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
||||||
function SPAWN:Spawn()
|
function SPAWN:Spawn()
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } )
|
self:F( { self.SpawnTemplatePrefix, self.SpawnIndex, self.AliveUnits } )
|
||||||
|
|
||||||
return self:SpawnWithIndex( self.SpawnIndex + 1 )
|
return self:SpawnWithIndex( self.SpawnIndex + 1 )
|
||||||
end
|
end
|
||||||
@ -430,14 +434,13 @@ end
|
|||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
||||||
function SPAWN:SpawnWithIndex( SpawnIndex )
|
function SPAWN:SpawnWithIndex( SpawnIndex )
|
||||||
self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups } )
|
self:F2( { SpawnTemplatePrefix = self.SpawnTemplatePrefix, SpawnIndex = SpawnIndex, AliveUnits = self.AliveUnits, SpawnMaxGroups = self.SpawnMaxGroups } )
|
||||||
|
|
||||||
if self:_GetSpawnIndex( SpawnIndex ) then
|
if self:_GetSpawnIndex( SpawnIndex ) then
|
||||||
|
|
||||||
if self.SpawnGroups[self.SpawnIndex].Visible then
|
if self.SpawnGroups[self.SpawnIndex].Visible then
|
||||||
self.SpawnGroups[self.SpawnIndex].Group:Activate()
|
self.SpawnGroups[self.SpawnIndex].Group:Activate()
|
||||||
else
|
else
|
||||||
self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
|
||||||
_EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnBirth, self )
|
_EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnBirth, self )
|
||||||
_EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
_EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
||||||
_EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
_EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
||||||
@ -449,8 +452,7 @@ function SPAWN:SpawnWithIndex( SpawnIndex )
|
|||||||
if self.RepeatOnEngineShutDown then
|
if self.RepeatOnEngineShutDown then
|
||||||
_EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnEngineShutDown, self )
|
_EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnEngineShutDown, self )
|
||||||
end
|
end
|
||||||
|
self:T3( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
||||||
self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
|
||||||
|
|
||||||
self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
||||||
|
|
||||||
@ -795,19 +797,17 @@ end
|
|||||||
-- The method will search for a #-mark, and will return the index behind the #-mark of the DCSUnit.
|
-- The method will search for a #-mark, and will return the index behind the #-mark of the DCSUnit.
|
||||||
-- It will return nil of no prefix was found.
|
-- It will return nil of no prefix was found.
|
||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @param DCSUnit The DCS unit to be searched.
|
-- @param DCSUnit#Unit DCSUnit The @{DCSUnit} to be searched.
|
||||||
-- @return #string The prefix
|
-- @return #string The prefix
|
||||||
-- @return #nil Nothing found
|
-- @return #nil Nothing found
|
||||||
function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit )
|
function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
||||||
|
|
||||||
if DCSUnit and DCSUnit:getName() then
|
local SpawnUnitName = ( DCSUnit and DCSUnit:getName() ) or nil
|
||||||
local IndexString = string.match( DCSUnit:getName(), "#.*-" ):sub( 2, -2 )
|
if SpawnUnitName then
|
||||||
self:T( IndexString )
|
local IndexString = string.match( SpawnUnitName, "#.*-" ):sub( 2, -2 )
|
||||||
|
|
||||||
if IndexString then
|
if IndexString then
|
||||||
local Index = tonumber( IndexString )
|
local Index = tonumber( IndexString )
|
||||||
self:T( { "Index:", IndexString, Index } )
|
|
||||||
return Index
|
return Index
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -815,22 +815,22 @@ function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit )
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Return the prefix of a DCSUnit.
|
--- Return the prefix of a SpawnUnit.
|
||||||
-- The method will search for a #-mark, and will return the text before the #-mark.
|
-- The method will search for a #-mark, and will return the text before the #-mark.
|
||||||
-- It will return nil of no prefix was found.
|
-- It will return nil of no prefix was found.
|
||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @param DCSUnit The DCS unit to be searched.
|
-- @param DCSUnit#UNIT DCSUnit The @{DCSUnit} to be searched.
|
||||||
-- @return #string The prefix
|
-- @return #string The prefix
|
||||||
-- @return #nil Nothing found
|
-- @return #nil Nothing found
|
||||||
function SPAWN:_GetPrefixFromDCSUnit( DCSUnit )
|
function SPAWN:_GetPrefixFromDCSUnit( DCSUnit )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
||||||
|
|
||||||
if DCSUnit and DCSUnit:getName() then
|
local DCSUnitName = ( DCSUnit and DCSUnit:getName() ) or nil
|
||||||
local SpawnPrefix = string.match( DCSUnit:getName(), ".*#" )
|
if DCSUnitName then
|
||||||
|
local SpawnPrefix = string.match( DCSUnitName, ".*#" )
|
||||||
if SpawnPrefix then
|
if SpawnPrefix then
|
||||||
SpawnPrefix = SpawnPrefix:sub( 1, -2 )
|
SpawnPrefix = SpawnPrefix:sub( 1, -2 )
|
||||||
end
|
end
|
||||||
self:T( SpawnPrefix )
|
|
||||||
return SpawnPrefix
|
return SpawnPrefix
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -838,18 +838,20 @@ function SPAWN:_GetPrefixFromDCSUnit( DCSUnit )
|
|||||||
end
|
end
|
||||||
|
|
||||||
--- Return the group within the SpawnGroups collection with input a DCSUnit.
|
--- Return the group within the SpawnGroups collection with input a DCSUnit.
|
||||||
|
-- @param #SPAWN self
|
||||||
|
-- @param DCSUnit#Unit DCSUnit The @{DCSUnit} to be searched.
|
||||||
|
-- @return Group#GROUP The Group
|
||||||
|
-- @return #nil Nothing found
|
||||||
function SPAWN:_GetGroupFromDCSUnit( DCSUnit )
|
function SPAWN:_GetGroupFromDCSUnit( DCSUnit )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
||||||
|
|
||||||
if DCSUnit then
|
local SpawnPrefix = self:_GetPrefixFromDCSUnit( DCSUnit )
|
||||||
local SpawnPrefix = self:_GetPrefixFromDCSUnit( DCSUnit )
|
|
||||||
|
if self.SpawnTemplatePrefix == SpawnPrefix or ( self.SpawnAliasPrefix and self.SpawnAliasPrefix == SpawnPrefix ) then
|
||||||
if self.SpawnTemplatePrefix == SpawnPrefix or ( self.SpawnAliasPrefix and self.SpawnAliasPrefix == SpawnPrefix ) then
|
local SpawnGroupIndex = self:_GetGroupIndexFromDCSUnit( DCSUnit )
|
||||||
local SpawnGroupIndex = self:_GetGroupIndexFromDCSUnit( DCSUnit )
|
local SpawnGroup = self.SpawnGroups[SpawnGroupIndex].Group
|
||||||
local SpawnGroup = self.SpawnGroups[SpawnGroupIndex].Group
|
self:T( SpawnGroup )
|
||||||
self:T( SpawnGroup )
|
return SpawnGroup
|
||||||
return SpawnGroup
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -859,12 +861,12 @@ end
|
|||||||
--- Get the index from a given group.
|
--- Get the index from a given group.
|
||||||
-- The function will search the name of the group for a #, and will return the number behind the #-mark.
|
-- The function will search the name of the group for a #, and will return the number behind the #-mark.
|
||||||
function SPAWN:GetSpawnIndexFromGroup( SpawnGroup )
|
function SPAWN:GetSpawnIndexFromGroup( SpawnGroup )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } )
|
||||||
|
|
||||||
local IndexString = string.match( SpawnGroup:GetName(), "#.*$" ):sub( 2 )
|
local IndexString = string.match( SpawnGroup:GetName(), "#.*$" ):sub( 2 )
|
||||||
local Index = tonumber( IndexString )
|
local Index = tonumber( IndexString )
|
||||||
|
|
||||||
self:T( IndexString, Index )
|
self:T3( IndexString, Index )
|
||||||
return Index
|
return Index
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -878,7 +880,7 @@ end
|
|||||||
|
|
||||||
--- Initalize the SpawnGroups collection.
|
--- Initalize the SpawnGroups collection.
|
||||||
function SPAWN:_InitializeSpawnGroups( SpawnIndex )
|
function SPAWN:_InitializeSpawnGroups( SpawnIndex )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } )
|
||||||
|
|
||||||
if not self.SpawnGroups[SpawnIndex] then
|
if not self.SpawnGroups[SpawnIndex] then
|
||||||
self.SpawnGroups[SpawnIndex] = {}
|
self.SpawnGroups[SpawnIndex] = {}
|
||||||
@ -956,7 +958,7 @@ function SPAWN:_GetTemplate( SpawnTemplatePrefix )
|
|||||||
SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix )
|
SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix )
|
||||||
SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix )
|
SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix )
|
||||||
|
|
||||||
self:T( { SpawnTemplate } )
|
self:T3( { SpawnTemplate } )
|
||||||
return SpawnTemplate
|
return SpawnTemplate
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -973,11 +975,11 @@ function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex )
|
|||||||
|
|
||||||
SpawnTemplate.groupId = nil
|
SpawnTemplate.groupId = nil
|
||||||
--SpawnTemplate.lateActivation = false
|
--SpawnTemplate.lateActivation = false
|
||||||
SpawnTemplate.lateActivation = false -- TODO BUGFIX
|
SpawnTemplate.lateActivation = false
|
||||||
|
|
||||||
if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then
|
if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then
|
||||||
self:T( "For ground units, visible needs to be false..." )
|
self:T3( "For ground units, visible needs to be false..." )
|
||||||
SpawnTemplate.visible = false -- TODO BUGFIX
|
SpawnTemplate.visible = false
|
||||||
end
|
end
|
||||||
|
|
||||||
if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then
|
if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then
|
||||||
@ -991,7 +993,7 @@ function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex )
|
|||||||
SpawnTemplate.units[UnitID].y = SpawnTemplate.route.points[1].y
|
SpawnTemplate.units[UnitID].y = SpawnTemplate.route.points[1].y
|
||||||
end
|
end
|
||||||
|
|
||||||
self:T( { "Template:", SpawnTemplate } )
|
self:T3( { "Template:", SpawnTemplate } )
|
||||||
return SpawnTemplate
|
return SpawnTemplate
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -1089,11 +1091,10 @@ end
|
|||||||
|
|
||||||
--- Get the next index of the groups to be spawned. This function is complicated, as it is used at several spaces.
|
--- Get the next index of the groups to be spawned. This function is complicated, as it is used at several spaces.
|
||||||
function SPAWN:_GetSpawnIndex( SpawnIndex )
|
function SPAWN:_GetSpawnIndex( SpawnIndex )
|
||||||
self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } )
|
self:F2( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } )
|
||||||
|
|
||||||
|
|
||||||
if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then
|
if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then
|
||||||
if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits < self.SpawnMaxUnitsAlive * #self.SpawnTemplate.units ) or self.UnControlled then
|
if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits + #self.SpawnTemplate.units <= self.SpawnMaxUnitsAlive ) or self.UnControlled == true then
|
||||||
if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then
|
if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then
|
||||||
self.SpawnCount = self.SpawnCount + 1
|
self.SpawnCount = self.SpawnCount + 1
|
||||||
SpawnIndex = self.SpawnCount
|
SpawnIndex = self.SpawnCount
|
||||||
@ -1114,14 +1115,16 @@ end
|
|||||||
|
|
||||||
|
|
||||||
-- TODO Need to delete this... _DATABASE does this now ...
|
-- TODO Need to delete this... _DATABASE does this now ...
|
||||||
function SPAWN:_OnBirth( event )
|
|
||||||
|
|
||||||
if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line
|
--- @param #SPAWN self
|
||||||
if event.initiator and event.initiator:getName() then
|
-- @param Event#EVENTDATA Event
|
||||||
local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator )
|
function SPAWN:_OnBirth( Event )
|
||||||
|
|
||||||
|
if timer.getTime0() < timer.getAbsTime() then
|
||||||
|
if Event.IniDCSUnit then
|
||||||
|
local EventPrefix = self:_GetPrefixFromDCSUnit( Event.IniDCSUnit )
|
||||||
|
self:T( { "Birth Event:", EventPrefix, self.SpawnTemplatePrefix } )
|
||||||
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
||||||
self:T( { "Birth event: " .. event.initiator:getName(), event } )
|
|
||||||
--MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " spawned." , 5, EventPrefix .. '/Event')
|
|
||||||
self.AliveUnits = self.AliveUnits + 1
|
self.AliveUnits = self.AliveUnits + 1
|
||||||
self:T( "Alive Units: " .. self.AliveUnits )
|
self:T( "Alive Units: " .. self.AliveUnits )
|
||||||
end
|
end
|
||||||
@ -1132,19 +1135,18 @@ end
|
|||||||
|
|
||||||
--- Obscolete
|
--- Obscolete
|
||||||
-- @todo Need to delete this... _DATABASE does this now ...
|
-- @todo Need to delete this... _DATABASE does this now ...
|
||||||
function SPAWN:_OnDeadOrCrash( event )
|
|
||||||
self:F( self.SpawnTemplatePrefix, event )
|
|
||||||
|
|
||||||
if event.initiator and event.initiator:getName() then
|
--- @param #SPAWN self
|
||||||
local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator )
|
-- @param Event#EVENTDATA Event
|
||||||
|
function SPAWN:_OnDeadOrCrash( Event )
|
||||||
|
self:F( self.SpawnTemplatePrefix, Event )
|
||||||
|
|
||||||
|
if Event.IniDCSUnit then
|
||||||
|
local EventPrefix = self:_GetPrefixFromDCSUnit( Event.IniDCSUnit )
|
||||||
|
self:T( { "Dead event: " .. EventPrefix, self.SpawnTemplatePrefix } )
|
||||||
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
||||||
self:T( { "Dead event: " .. event.initiator:getName(), event } )
|
self.AliveUnits = self.AliveUnits - 1
|
||||||
-- local DestroyedUnit = Unit.getByName( EventPrefix )
|
self:T( "Alive Units: " .. self.AliveUnits )
|
||||||
-- if DestroyedUnit and DestroyedUnit.getLife() <= 1.0 then
|
|
||||||
--MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " crashed." , 5, EventPrefix .. '/Event')
|
|
||||||
self.AliveUnits = self.AliveUnits - 1
|
|
||||||
self:T( "Alive Units: " .. self.AliveUnits )
|
|
||||||
-- end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1214,7 +1216,7 @@ end
|
|||||||
--- This function is called automatically by the Spawning scheduler.
|
--- This function is called automatically by the Spawning scheduler.
|
||||||
-- It is the internal worker method SPAWNing new Groups on the defined time intervals.
|
-- It is the internal worker method SPAWNing new Groups on the defined time intervals.
|
||||||
function SPAWN:_Scheduler()
|
function SPAWN:_Scheduler()
|
||||||
self:F( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } )
|
self:F2( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } )
|
||||||
|
|
||||||
-- Validate if there are still groups left in the batch...
|
-- Validate if there are still groups left in the batch...
|
||||||
self:Spawn()
|
self:Spawn()
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
|
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
|
||||||
env.info( 'Moose Generation Timestamp: 20160708_1720' )
|
env.info( 'Moose Generation Timestamp: 20160712_0855' )
|
||||||
local base = _G
|
local base = _G
|
||||||
|
|
||||||
Include = {}
|
Include = {}
|
||||||
@ -6502,7 +6502,7 @@ function EVENT:onEvent( Event )
|
|||||||
self:E( { _EVENTCODES[Event.id], Event.IniUnitName, Event.TgtUnitName, Event.WeaponName } )
|
self:E( { _EVENTCODES[Event.id], Event.IniUnitName, Event.TgtUnitName, Event.WeaponName } )
|
||||||
for ClassName, EventData in pairs( self.Events[Event.id] ) do
|
for ClassName, EventData in pairs( self.Events[Event.id] ) do
|
||||||
if Event.IniDCSUnitName and EventData.IniUnit and EventData.IniUnit[Event.IniDCSUnitName] then
|
if Event.IniDCSUnitName and EventData.IniUnit and EventData.IniUnit[Event.IniDCSUnitName] then
|
||||||
self:E( { "Calling event function for class ", ClassName, " unit ", Event.IniDCSUnitName } )
|
self:E( { "Calling event function for class ", ClassName, " unit ", Event.IniUnitName } )
|
||||||
EventData.IniUnit[Event.IniDCSUnitName].EventFunction( EventData.IniUnit[Event.IniDCSUnitName].EventSelf, Event )
|
EventData.IniUnit[Event.IniDCSUnitName].EventFunction( EventData.IniUnit[Event.IniDCSUnitName].EventSelf, Event )
|
||||||
else
|
else
|
||||||
if Event.IniDCSUnit and not EventData.IniUnit then
|
if Event.IniDCSUnit and not EventData.IniUnit then
|
||||||
@ -18024,6 +18024,10 @@ end
|
|||||||
-- @field ClassName
|
-- @field ClassName
|
||||||
-- @field #string SpawnTemplatePrefix
|
-- @field #string SpawnTemplatePrefix
|
||||||
-- @field #string SpawnAliasPrefix
|
-- @field #string SpawnAliasPrefix
|
||||||
|
-- @field #number AliveUnits
|
||||||
|
-- @field #number MaxAliveUnits
|
||||||
|
-- @field #number SpawnIndex
|
||||||
|
-- @field #number MaxAliveGroups
|
||||||
SPAWN = {
|
SPAWN = {
|
||||||
ClassName = "SPAWN",
|
ClassName = "SPAWN",
|
||||||
SpawnTemplatePrefix = nil,
|
SpawnTemplatePrefix = nil,
|
||||||
@ -18340,7 +18344,7 @@ end
|
|||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
||||||
function SPAWN:Spawn()
|
function SPAWN:Spawn()
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } )
|
self:F( { self.SpawnTemplatePrefix, self.SpawnIndex, self.AliveUnits } )
|
||||||
|
|
||||||
return self:SpawnWithIndex( self.SpawnIndex + 1 )
|
return self:SpawnWithIndex( self.SpawnIndex + 1 )
|
||||||
end
|
end
|
||||||
@ -18374,14 +18378,13 @@ end
|
|||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
||||||
function SPAWN:SpawnWithIndex( SpawnIndex )
|
function SPAWN:SpawnWithIndex( SpawnIndex )
|
||||||
self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups } )
|
self:F2( { SpawnTemplatePrefix = self.SpawnTemplatePrefix, SpawnIndex = SpawnIndex, AliveUnits = self.AliveUnits, SpawnMaxGroups = self.SpawnMaxGroups } )
|
||||||
|
|
||||||
if self:_GetSpawnIndex( SpawnIndex ) then
|
if self:_GetSpawnIndex( SpawnIndex ) then
|
||||||
|
|
||||||
if self.SpawnGroups[self.SpawnIndex].Visible then
|
if self.SpawnGroups[self.SpawnIndex].Visible then
|
||||||
self.SpawnGroups[self.SpawnIndex].Group:Activate()
|
self.SpawnGroups[self.SpawnIndex].Group:Activate()
|
||||||
else
|
else
|
||||||
self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
|
||||||
_EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnBirth, self )
|
_EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnBirth, self )
|
||||||
_EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
_EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
||||||
_EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
_EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
||||||
@ -18393,8 +18396,7 @@ function SPAWN:SpawnWithIndex( SpawnIndex )
|
|||||||
if self.RepeatOnEngineShutDown then
|
if self.RepeatOnEngineShutDown then
|
||||||
_EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnEngineShutDown, self )
|
_EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnEngineShutDown, self )
|
||||||
end
|
end
|
||||||
|
self:T3( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
||||||
self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
|
||||||
|
|
||||||
self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
||||||
|
|
||||||
@ -18739,19 +18741,17 @@ end
|
|||||||
-- The method will search for a #-mark, and will return the index behind the #-mark of the DCSUnit.
|
-- The method will search for a #-mark, and will return the index behind the #-mark of the DCSUnit.
|
||||||
-- It will return nil of no prefix was found.
|
-- It will return nil of no prefix was found.
|
||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @param DCSUnit The DCS unit to be searched.
|
-- @param DCSUnit#Unit DCSUnit The @{DCSUnit} to be searched.
|
||||||
-- @return #string The prefix
|
-- @return #string The prefix
|
||||||
-- @return #nil Nothing found
|
-- @return #nil Nothing found
|
||||||
function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit )
|
function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
||||||
|
|
||||||
if DCSUnit and DCSUnit:getName() then
|
local SpawnUnitName = ( DCSUnit and DCSUnit:getName() ) or nil
|
||||||
local IndexString = string.match( DCSUnit:getName(), "#.*-" ):sub( 2, -2 )
|
if SpawnUnitName then
|
||||||
self:T( IndexString )
|
local IndexString = string.match( SpawnUnitName, "#.*-" ):sub( 2, -2 )
|
||||||
|
|
||||||
if IndexString then
|
if IndexString then
|
||||||
local Index = tonumber( IndexString )
|
local Index = tonumber( IndexString )
|
||||||
self:T( { "Index:", IndexString, Index } )
|
|
||||||
return Index
|
return Index
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -18759,22 +18759,22 @@ function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit )
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Return the prefix of a DCSUnit.
|
--- Return the prefix of a SpawnUnit.
|
||||||
-- The method will search for a #-mark, and will return the text before the #-mark.
|
-- The method will search for a #-mark, and will return the text before the #-mark.
|
||||||
-- It will return nil of no prefix was found.
|
-- It will return nil of no prefix was found.
|
||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @param DCSUnit The DCS unit to be searched.
|
-- @param DCSUnit#UNIT DCSUnit The @{DCSUnit} to be searched.
|
||||||
-- @return #string The prefix
|
-- @return #string The prefix
|
||||||
-- @return #nil Nothing found
|
-- @return #nil Nothing found
|
||||||
function SPAWN:_GetPrefixFromDCSUnit( DCSUnit )
|
function SPAWN:_GetPrefixFromDCSUnit( DCSUnit )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
||||||
|
|
||||||
if DCSUnit and DCSUnit:getName() then
|
local DCSUnitName = ( DCSUnit and DCSUnit:getName() ) or nil
|
||||||
local SpawnPrefix = string.match( DCSUnit:getName(), ".*#" )
|
if DCSUnitName then
|
||||||
|
local SpawnPrefix = string.match( DCSUnitName, ".*#" )
|
||||||
if SpawnPrefix then
|
if SpawnPrefix then
|
||||||
SpawnPrefix = SpawnPrefix:sub( 1, -2 )
|
SpawnPrefix = SpawnPrefix:sub( 1, -2 )
|
||||||
end
|
end
|
||||||
self:T( SpawnPrefix )
|
|
||||||
return SpawnPrefix
|
return SpawnPrefix
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -18782,18 +18782,20 @@ function SPAWN:_GetPrefixFromDCSUnit( DCSUnit )
|
|||||||
end
|
end
|
||||||
|
|
||||||
--- Return the group within the SpawnGroups collection with input a DCSUnit.
|
--- Return the group within the SpawnGroups collection with input a DCSUnit.
|
||||||
|
-- @param #SPAWN self
|
||||||
|
-- @param DCSUnit#Unit DCSUnit The @{DCSUnit} to be searched.
|
||||||
|
-- @return Group#GROUP The Group
|
||||||
|
-- @return #nil Nothing found
|
||||||
function SPAWN:_GetGroupFromDCSUnit( DCSUnit )
|
function SPAWN:_GetGroupFromDCSUnit( DCSUnit )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
||||||
|
|
||||||
if DCSUnit then
|
local SpawnPrefix = self:_GetPrefixFromDCSUnit( DCSUnit )
|
||||||
local SpawnPrefix = self:_GetPrefixFromDCSUnit( DCSUnit )
|
|
||||||
|
if self.SpawnTemplatePrefix == SpawnPrefix or ( self.SpawnAliasPrefix and self.SpawnAliasPrefix == SpawnPrefix ) then
|
||||||
if self.SpawnTemplatePrefix == SpawnPrefix or ( self.SpawnAliasPrefix and self.SpawnAliasPrefix == SpawnPrefix ) then
|
local SpawnGroupIndex = self:_GetGroupIndexFromDCSUnit( DCSUnit )
|
||||||
local SpawnGroupIndex = self:_GetGroupIndexFromDCSUnit( DCSUnit )
|
local SpawnGroup = self.SpawnGroups[SpawnGroupIndex].Group
|
||||||
local SpawnGroup = self.SpawnGroups[SpawnGroupIndex].Group
|
self:T( SpawnGroup )
|
||||||
self:T( SpawnGroup )
|
return SpawnGroup
|
||||||
return SpawnGroup
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -18803,12 +18805,12 @@ end
|
|||||||
--- Get the index from a given group.
|
--- Get the index from a given group.
|
||||||
-- The function will search the name of the group for a #, and will return the number behind the #-mark.
|
-- The function will search the name of the group for a #, and will return the number behind the #-mark.
|
||||||
function SPAWN:GetSpawnIndexFromGroup( SpawnGroup )
|
function SPAWN:GetSpawnIndexFromGroup( SpawnGroup )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } )
|
||||||
|
|
||||||
local IndexString = string.match( SpawnGroup:GetName(), "#.*$" ):sub( 2 )
|
local IndexString = string.match( SpawnGroup:GetName(), "#.*$" ):sub( 2 )
|
||||||
local Index = tonumber( IndexString )
|
local Index = tonumber( IndexString )
|
||||||
|
|
||||||
self:T( IndexString, Index )
|
self:T3( IndexString, Index )
|
||||||
return Index
|
return Index
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -18822,7 +18824,7 @@ end
|
|||||||
|
|
||||||
--- Initalize the SpawnGroups collection.
|
--- Initalize the SpawnGroups collection.
|
||||||
function SPAWN:_InitializeSpawnGroups( SpawnIndex )
|
function SPAWN:_InitializeSpawnGroups( SpawnIndex )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } )
|
||||||
|
|
||||||
if not self.SpawnGroups[SpawnIndex] then
|
if not self.SpawnGroups[SpawnIndex] then
|
||||||
self.SpawnGroups[SpawnIndex] = {}
|
self.SpawnGroups[SpawnIndex] = {}
|
||||||
@ -18900,7 +18902,7 @@ function SPAWN:_GetTemplate( SpawnTemplatePrefix )
|
|||||||
SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix )
|
SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix )
|
||||||
SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix )
|
SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix )
|
||||||
|
|
||||||
self:T( { SpawnTemplate } )
|
self:T3( { SpawnTemplate } )
|
||||||
return SpawnTemplate
|
return SpawnTemplate
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -18917,11 +18919,11 @@ function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex )
|
|||||||
|
|
||||||
SpawnTemplate.groupId = nil
|
SpawnTemplate.groupId = nil
|
||||||
--SpawnTemplate.lateActivation = false
|
--SpawnTemplate.lateActivation = false
|
||||||
SpawnTemplate.lateActivation = false -- TODO BUGFIX
|
SpawnTemplate.lateActivation = false
|
||||||
|
|
||||||
if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then
|
if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then
|
||||||
self:T( "For ground units, visible needs to be false..." )
|
self:T3( "For ground units, visible needs to be false..." )
|
||||||
SpawnTemplate.visible = false -- TODO BUGFIX
|
SpawnTemplate.visible = false
|
||||||
end
|
end
|
||||||
|
|
||||||
if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then
|
if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then
|
||||||
@ -18935,7 +18937,7 @@ function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex )
|
|||||||
SpawnTemplate.units[UnitID].y = SpawnTemplate.route.points[1].y
|
SpawnTemplate.units[UnitID].y = SpawnTemplate.route.points[1].y
|
||||||
end
|
end
|
||||||
|
|
||||||
self:T( { "Template:", SpawnTemplate } )
|
self:T3( { "Template:", SpawnTemplate } )
|
||||||
return SpawnTemplate
|
return SpawnTemplate
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -19033,11 +19035,10 @@ end
|
|||||||
|
|
||||||
--- Get the next index of the groups to be spawned. This function is complicated, as it is used at several spaces.
|
--- Get the next index of the groups to be spawned. This function is complicated, as it is used at several spaces.
|
||||||
function SPAWN:_GetSpawnIndex( SpawnIndex )
|
function SPAWN:_GetSpawnIndex( SpawnIndex )
|
||||||
self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } )
|
self:F2( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } )
|
||||||
|
|
||||||
|
|
||||||
if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then
|
if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then
|
||||||
if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits < self.SpawnMaxUnitsAlive * #self.SpawnTemplate.units ) or self.UnControlled then
|
if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits + #self.SpawnTemplate.units <= self.SpawnMaxUnitsAlive ) or self.UnControlled == true then
|
||||||
if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then
|
if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then
|
||||||
self.SpawnCount = self.SpawnCount + 1
|
self.SpawnCount = self.SpawnCount + 1
|
||||||
SpawnIndex = self.SpawnCount
|
SpawnIndex = self.SpawnCount
|
||||||
@ -19058,14 +19059,16 @@ end
|
|||||||
|
|
||||||
|
|
||||||
-- TODO Need to delete this... _DATABASE does this now ...
|
-- TODO Need to delete this... _DATABASE does this now ...
|
||||||
function SPAWN:_OnBirth( event )
|
|
||||||
|
|
||||||
if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line
|
--- @param #SPAWN self
|
||||||
if event.initiator and event.initiator:getName() then
|
-- @param Event#EVENTDATA Event
|
||||||
local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator )
|
function SPAWN:_OnBirth( Event )
|
||||||
|
|
||||||
|
if timer.getTime0() < timer.getAbsTime() then
|
||||||
|
if Event.IniDCSUnit then
|
||||||
|
local EventPrefix = self:_GetPrefixFromDCSUnit( Event.IniDCSUnit )
|
||||||
|
self:T( { "Birth Event:", EventPrefix, self.SpawnTemplatePrefix } )
|
||||||
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
||||||
self:T( { "Birth event: " .. event.initiator:getName(), event } )
|
|
||||||
--MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " spawned." , 5, EventPrefix .. '/Event')
|
|
||||||
self.AliveUnits = self.AliveUnits + 1
|
self.AliveUnits = self.AliveUnits + 1
|
||||||
self:T( "Alive Units: " .. self.AliveUnits )
|
self:T( "Alive Units: " .. self.AliveUnits )
|
||||||
end
|
end
|
||||||
@ -19076,19 +19079,18 @@ end
|
|||||||
|
|
||||||
--- Obscolete
|
--- Obscolete
|
||||||
-- @todo Need to delete this... _DATABASE does this now ...
|
-- @todo Need to delete this... _DATABASE does this now ...
|
||||||
function SPAWN:_OnDeadOrCrash( event )
|
|
||||||
self:F( self.SpawnTemplatePrefix, event )
|
|
||||||
|
|
||||||
if event.initiator and event.initiator:getName() then
|
--- @param #SPAWN self
|
||||||
local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator )
|
-- @param Event#EVENTDATA Event
|
||||||
|
function SPAWN:_OnDeadOrCrash( Event )
|
||||||
|
self:F( self.SpawnTemplatePrefix, Event )
|
||||||
|
|
||||||
|
if Event.IniDCSUnit then
|
||||||
|
local EventPrefix = self:_GetPrefixFromDCSUnit( Event.IniDCSUnit )
|
||||||
|
self:T( { "Dead event: " .. EventPrefix, self.SpawnTemplatePrefix } )
|
||||||
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
||||||
self:T( { "Dead event: " .. event.initiator:getName(), event } )
|
self.AliveUnits = self.AliveUnits - 1
|
||||||
-- local DestroyedUnit = Unit.getByName( EventPrefix )
|
self:T( "Alive Units: " .. self.AliveUnits )
|
||||||
-- if DestroyedUnit and DestroyedUnit.getLife() <= 1.0 then
|
|
||||||
--MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " crashed." , 5, EventPrefix .. '/Event')
|
|
||||||
self.AliveUnits = self.AliveUnits - 1
|
|
||||||
self:T( "Alive Units: " .. self.AliveUnits )
|
|
||||||
-- end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -19158,7 +19160,7 @@ end
|
|||||||
--- This function is called automatically by the Spawning scheduler.
|
--- This function is called automatically by the Spawning scheduler.
|
||||||
-- It is the internal worker method SPAWNing new Groups on the defined time intervals.
|
-- It is the internal worker method SPAWNing new Groups on the defined time intervals.
|
||||||
function SPAWN:_Scheduler()
|
function SPAWN:_Scheduler()
|
||||||
self:F( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } )
|
self:F2( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } )
|
||||||
|
|
||||||
-- Validate if there are still groups left in the batch...
|
-- Validate if there are still groups left in the batch...
|
||||||
self:Spawn()
|
self:Spawn()
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
|
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
|
||||||
env.info( 'Moose Generation Timestamp: 20160708_1720' )
|
env.info( 'Moose Generation Timestamp: 20160712_0855' )
|
||||||
local base = _G
|
local base = _G
|
||||||
|
|
||||||
Include = {}
|
Include = {}
|
||||||
@ -6502,7 +6502,7 @@ function EVENT:onEvent( Event )
|
|||||||
self:E( { _EVENTCODES[Event.id], Event.IniUnitName, Event.TgtUnitName, Event.WeaponName } )
|
self:E( { _EVENTCODES[Event.id], Event.IniUnitName, Event.TgtUnitName, Event.WeaponName } )
|
||||||
for ClassName, EventData in pairs( self.Events[Event.id] ) do
|
for ClassName, EventData in pairs( self.Events[Event.id] ) do
|
||||||
if Event.IniDCSUnitName and EventData.IniUnit and EventData.IniUnit[Event.IniDCSUnitName] then
|
if Event.IniDCSUnitName and EventData.IniUnit and EventData.IniUnit[Event.IniDCSUnitName] then
|
||||||
self:E( { "Calling event function for class ", ClassName, " unit ", Event.IniDCSUnitName } )
|
self:E( { "Calling event function for class ", ClassName, " unit ", Event.IniUnitName } )
|
||||||
EventData.IniUnit[Event.IniDCSUnitName].EventFunction( EventData.IniUnit[Event.IniDCSUnitName].EventSelf, Event )
|
EventData.IniUnit[Event.IniDCSUnitName].EventFunction( EventData.IniUnit[Event.IniDCSUnitName].EventSelf, Event )
|
||||||
else
|
else
|
||||||
if Event.IniDCSUnit and not EventData.IniUnit then
|
if Event.IniDCSUnit and not EventData.IniUnit then
|
||||||
@ -18024,6 +18024,10 @@ end
|
|||||||
-- @field ClassName
|
-- @field ClassName
|
||||||
-- @field #string SpawnTemplatePrefix
|
-- @field #string SpawnTemplatePrefix
|
||||||
-- @field #string SpawnAliasPrefix
|
-- @field #string SpawnAliasPrefix
|
||||||
|
-- @field #number AliveUnits
|
||||||
|
-- @field #number MaxAliveUnits
|
||||||
|
-- @field #number SpawnIndex
|
||||||
|
-- @field #number MaxAliveGroups
|
||||||
SPAWN = {
|
SPAWN = {
|
||||||
ClassName = "SPAWN",
|
ClassName = "SPAWN",
|
||||||
SpawnTemplatePrefix = nil,
|
SpawnTemplatePrefix = nil,
|
||||||
@ -18340,7 +18344,7 @@ end
|
|||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
||||||
function SPAWN:Spawn()
|
function SPAWN:Spawn()
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnIndex } )
|
self:F( { self.SpawnTemplatePrefix, self.SpawnIndex, self.AliveUnits } )
|
||||||
|
|
||||||
return self:SpawnWithIndex( self.SpawnIndex + 1 )
|
return self:SpawnWithIndex( self.SpawnIndex + 1 )
|
||||||
end
|
end
|
||||||
@ -18374,14 +18378,13 @@ end
|
|||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
-- @return Group#GROUP The group that was spawned. You can use this group for further actions.
|
||||||
function SPAWN:SpawnWithIndex( SpawnIndex )
|
function SPAWN:SpawnWithIndex( SpawnIndex )
|
||||||
self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups } )
|
self:F2( { SpawnTemplatePrefix = self.SpawnTemplatePrefix, SpawnIndex = SpawnIndex, AliveUnits = self.AliveUnits, SpawnMaxGroups = self.SpawnMaxGroups } )
|
||||||
|
|
||||||
if self:_GetSpawnIndex( SpawnIndex ) then
|
if self:_GetSpawnIndex( SpawnIndex ) then
|
||||||
|
|
||||||
if self.SpawnGroups[self.SpawnIndex].Visible then
|
if self.SpawnGroups[self.SpawnIndex].Visible then
|
||||||
self.SpawnGroups[self.SpawnIndex].Group:Activate()
|
self.SpawnGroups[self.SpawnIndex].Group:Activate()
|
||||||
else
|
else
|
||||||
self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
|
||||||
_EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnBirth, self )
|
_EVENTDISPATCHER:OnBirthForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnBirth, self )
|
||||||
_EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
_EVENTDISPATCHER:OnCrashForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
||||||
_EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
_EVENTDISPATCHER:OnDeadForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnDeadOrCrash, self )
|
||||||
@ -18393,8 +18396,7 @@ function SPAWN:SpawnWithIndex( SpawnIndex )
|
|||||||
if self.RepeatOnEngineShutDown then
|
if self.RepeatOnEngineShutDown then
|
||||||
_EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnEngineShutDown, self )
|
_EVENTDISPATCHER:OnEngineShutDownForTemplate( self.SpawnGroups[self.SpawnIndex].SpawnTemplate, self._OnEngineShutDown, self )
|
||||||
end
|
end
|
||||||
|
self:T3( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
||||||
self:T( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
|
||||||
|
|
||||||
self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
self.SpawnGroups[self.SpawnIndex].Group = _DATABASE:Spawn( self.SpawnGroups[self.SpawnIndex].SpawnTemplate )
|
||||||
|
|
||||||
@ -18739,19 +18741,17 @@ end
|
|||||||
-- The method will search for a #-mark, and will return the index behind the #-mark of the DCSUnit.
|
-- The method will search for a #-mark, and will return the index behind the #-mark of the DCSUnit.
|
||||||
-- It will return nil of no prefix was found.
|
-- It will return nil of no prefix was found.
|
||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @param DCSUnit The DCS unit to be searched.
|
-- @param DCSUnit#Unit DCSUnit The @{DCSUnit} to be searched.
|
||||||
-- @return #string The prefix
|
-- @return #string The prefix
|
||||||
-- @return #nil Nothing found
|
-- @return #nil Nothing found
|
||||||
function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit )
|
function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
||||||
|
|
||||||
if DCSUnit and DCSUnit:getName() then
|
local SpawnUnitName = ( DCSUnit and DCSUnit:getName() ) or nil
|
||||||
local IndexString = string.match( DCSUnit:getName(), "#.*-" ):sub( 2, -2 )
|
if SpawnUnitName then
|
||||||
self:T( IndexString )
|
local IndexString = string.match( SpawnUnitName, "#.*-" ):sub( 2, -2 )
|
||||||
|
|
||||||
if IndexString then
|
if IndexString then
|
||||||
local Index = tonumber( IndexString )
|
local Index = tonumber( IndexString )
|
||||||
self:T( { "Index:", IndexString, Index } )
|
|
||||||
return Index
|
return Index
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -18759,22 +18759,22 @@ function SPAWN:_GetGroupIndexFromDCSUnit( DCSUnit )
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Return the prefix of a DCSUnit.
|
--- Return the prefix of a SpawnUnit.
|
||||||
-- The method will search for a #-mark, and will return the text before the #-mark.
|
-- The method will search for a #-mark, and will return the text before the #-mark.
|
||||||
-- It will return nil of no prefix was found.
|
-- It will return nil of no prefix was found.
|
||||||
-- @param #SPAWN self
|
-- @param #SPAWN self
|
||||||
-- @param DCSUnit The DCS unit to be searched.
|
-- @param DCSUnit#UNIT DCSUnit The @{DCSUnit} to be searched.
|
||||||
-- @return #string The prefix
|
-- @return #string The prefix
|
||||||
-- @return #nil Nothing found
|
-- @return #nil Nothing found
|
||||||
function SPAWN:_GetPrefixFromDCSUnit( DCSUnit )
|
function SPAWN:_GetPrefixFromDCSUnit( DCSUnit )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
||||||
|
|
||||||
if DCSUnit and DCSUnit:getName() then
|
local DCSUnitName = ( DCSUnit and DCSUnit:getName() ) or nil
|
||||||
local SpawnPrefix = string.match( DCSUnit:getName(), ".*#" )
|
if DCSUnitName then
|
||||||
|
local SpawnPrefix = string.match( DCSUnitName, ".*#" )
|
||||||
if SpawnPrefix then
|
if SpawnPrefix then
|
||||||
SpawnPrefix = SpawnPrefix:sub( 1, -2 )
|
SpawnPrefix = SpawnPrefix:sub( 1, -2 )
|
||||||
end
|
end
|
||||||
self:T( SpawnPrefix )
|
|
||||||
return SpawnPrefix
|
return SpawnPrefix
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -18782,18 +18782,20 @@ function SPAWN:_GetPrefixFromDCSUnit( DCSUnit )
|
|||||||
end
|
end
|
||||||
|
|
||||||
--- Return the group within the SpawnGroups collection with input a DCSUnit.
|
--- Return the group within the SpawnGroups collection with input a DCSUnit.
|
||||||
|
-- @param #SPAWN self
|
||||||
|
-- @param DCSUnit#Unit DCSUnit The @{DCSUnit} to be searched.
|
||||||
|
-- @return Group#GROUP The Group
|
||||||
|
-- @return #nil Nothing found
|
||||||
function SPAWN:_GetGroupFromDCSUnit( DCSUnit )
|
function SPAWN:_GetGroupFromDCSUnit( DCSUnit )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, DCSUnit } )
|
||||||
|
|
||||||
if DCSUnit then
|
local SpawnPrefix = self:_GetPrefixFromDCSUnit( DCSUnit )
|
||||||
local SpawnPrefix = self:_GetPrefixFromDCSUnit( DCSUnit )
|
|
||||||
|
if self.SpawnTemplatePrefix == SpawnPrefix or ( self.SpawnAliasPrefix and self.SpawnAliasPrefix == SpawnPrefix ) then
|
||||||
if self.SpawnTemplatePrefix == SpawnPrefix or ( self.SpawnAliasPrefix and self.SpawnAliasPrefix == SpawnPrefix ) then
|
local SpawnGroupIndex = self:_GetGroupIndexFromDCSUnit( DCSUnit )
|
||||||
local SpawnGroupIndex = self:_GetGroupIndexFromDCSUnit( DCSUnit )
|
local SpawnGroup = self.SpawnGroups[SpawnGroupIndex].Group
|
||||||
local SpawnGroup = self.SpawnGroups[SpawnGroupIndex].Group
|
self:T( SpawnGroup )
|
||||||
self:T( SpawnGroup )
|
return SpawnGroup
|
||||||
return SpawnGroup
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -18803,12 +18805,12 @@ end
|
|||||||
--- Get the index from a given group.
|
--- Get the index from a given group.
|
||||||
-- The function will search the name of the group for a #, and will return the number behind the #-mark.
|
-- The function will search the name of the group for a #, and will return the number behind the #-mark.
|
||||||
function SPAWN:GetSpawnIndexFromGroup( SpawnGroup )
|
function SPAWN:GetSpawnIndexFromGroup( SpawnGroup )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnGroup } )
|
||||||
|
|
||||||
local IndexString = string.match( SpawnGroup:GetName(), "#.*$" ):sub( 2 )
|
local IndexString = string.match( SpawnGroup:GetName(), "#.*$" ):sub( 2 )
|
||||||
local Index = tonumber( IndexString )
|
local Index = tonumber( IndexString )
|
||||||
|
|
||||||
self:T( IndexString, Index )
|
self:T3( IndexString, Index )
|
||||||
return Index
|
return Index
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -18822,7 +18824,7 @@ end
|
|||||||
|
|
||||||
--- Initalize the SpawnGroups collection.
|
--- Initalize the SpawnGroups collection.
|
||||||
function SPAWN:_InitializeSpawnGroups( SpawnIndex )
|
function SPAWN:_InitializeSpawnGroups( SpawnIndex )
|
||||||
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } )
|
self:F3( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } )
|
||||||
|
|
||||||
if not self.SpawnGroups[SpawnIndex] then
|
if not self.SpawnGroups[SpawnIndex] then
|
||||||
self.SpawnGroups[SpawnIndex] = {}
|
self.SpawnGroups[SpawnIndex] = {}
|
||||||
@ -18900,7 +18902,7 @@ function SPAWN:_GetTemplate( SpawnTemplatePrefix )
|
|||||||
SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix )
|
SpawnTemplate.SpawnCategoryID = self:_GetGroupCategoryID( SpawnTemplatePrefix )
|
||||||
SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix )
|
SpawnTemplate.SpawnCountryID = self:_GetGroupCountryID( SpawnTemplatePrefix )
|
||||||
|
|
||||||
self:T( { SpawnTemplate } )
|
self:T3( { SpawnTemplate } )
|
||||||
return SpawnTemplate
|
return SpawnTemplate
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -18917,11 +18919,11 @@ function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex )
|
|||||||
|
|
||||||
SpawnTemplate.groupId = nil
|
SpawnTemplate.groupId = nil
|
||||||
--SpawnTemplate.lateActivation = false
|
--SpawnTemplate.lateActivation = false
|
||||||
SpawnTemplate.lateActivation = false -- TODO BUGFIX
|
SpawnTemplate.lateActivation = false
|
||||||
|
|
||||||
if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then
|
if SpawnTemplate.SpawnCategoryID == Group.Category.GROUND then
|
||||||
self:T( "For ground units, visible needs to be false..." )
|
self:T3( "For ground units, visible needs to be false..." )
|
||||||
SpawnTemplate.visible = false -- TODO BUGFIX
|
SpawnTemplate.visible = false
|
||||||
end
|
end
|
||||||
|
|
||||||
if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then
|
if SpawnTemplate.SpawnCategoryID == Group.Category.HELICOPTER or SpawnTemplate.SpawnCategoryID == Group.Category.AIRPLANE then
|
||||||
@ -18935,7 +18937,7 @@ function SPAWN:_Prepare( SpawnTemplatePrefix, SpawnIndex )
|
|||||||
SpawnTemplate.units[UnitID].y = SpawnTemplate.route.points[1].y
|
SpawnTemplate.units[UnitID].y = SpawnTemplate.route.points[1].y
|
||||||
end
|
end
|
||||||
|
|
||||||
self:T( { "Template:", SpawnTemplate } )
|
self:T3( { "Template:", SpawnTemplate } )
|
||||||
return SpawnTemplate
|
return SpawnTemplate
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -19033,11 +19035,10 @@ end
|
|||||||
|
|
||||||
--- Get the next index of the groups to be spawned. This function is complicated, as it is used at several spaces.
|
--- Get the next index of the groups to be spawned. This function is complicated, as it is used at several spaces.
|
||||||
function SPAWN:_GetSpawnIndex( SpawnIndex )
|
function SPAWN:_GetSpawnIndex( SpawnIndex )
|
||||||
self:F( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } )
|
self:F2( { self.SpawnTemplatePrefix, SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive, self.AliveUnits, #self.SpawnTemplate.units } )
|
||||||
|
|
||||||
|
|
||||||
if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then
|
if ( self.SpawnMaxGroups == 0 ) or ( SpawnIndex <= self.SpawnMaxGroups ) then
|
||||||
if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits < self.SpawnMaxUnitsAlive * #self.SpawnTemplate.units ) or self.UnControlled then
|
if ( self.SpawnMaxUnitsAlive == 0 ) or ( self.AliveUnits + #self.SpawnTemplate.units <= self.SpawnMaxUnitsAlive ) or self.UnControlled == true then
|
||||||
if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then
|
if SpawnIndex and SpawnIndex >= self.SpawnCount + 1 then
|
||||||
self.SpawnCount = self.SpawnCount + 1
|
self.SpawnCount = self.SpawnCount + 1
|
||||||
SpawnIndex = self.SpawnCount
|
SpawnIndex = self.SpawnCount
|
||||||
@ -19058,14 +19059,16 @@ end
|
|||||||
|
|
||||||
|
|
||||||
-- TODO Need to delete this... _DATABASE does this now ...
|
-- TODO Need to delete this... _DATABASE does this now ...
|
||||||
function SPAWN:_OnBirth( event )
|
|
||||||
|
|
||||||
if timer.getTime0() < timer.getAbsTime() then -- dont need to add units spawned in at the start of the mission if mist is loaded in init line
|
--- @param #SPAWN self
|
||||||
if event.initiator and event.initiator:getName() then
|
-- @param Event#EVENTDATA Event
|
||||||
local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator )
|
function SPAWN:_OnBirth( Event )
|
||||||
|
|
||||||
|
if timer.getTime0() < timer.getAbsTime() then
|
||||||
|
if Event.IniDCSUnit then
|
||||||
|
local EventPrefix = self:_GetPrefixFromDCSUnit( Event.IniDCSUnit )
|
||||||
|
self:T( { "Birth Event:", EventPrefix, self.SpawnTemplatePrefix } )
|
||||||
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
||||||
self:T( { "Birth event: " .. event.initiator:getName(), event } )
|
|
||||||
--MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " spawned." , 5, EventPrefix .. '/Event')
|
|
||||||
self.AliveUnits = self.AliveUnits + 1
|
self.AliveUnits = self.AliveUnits + 1
|
||||||
self:T( "Alive Units: " .. self.AliveUnits )
|
self:T( "Alive Units: " .. self.AliveUnits )
|
||||||
end
|
end
|
||||||
@ -19076,19 +19079,18 @@ end
|
|||||||
|
|
||||||
--- Obscolete
|
--- Obscolete
|
||||||
-- @todo Need to delete this... _DATABASE does this now ...
|
-- @todo Need to delete this... _DATABASE does this now ...
|
||||||
function SPAWN:_OnDeadOrCrash( event )
|
|
||||||
self:F( self.SpawnTemplatePrefix, event )
|
|
||||||
|
|
||||||
if event.initiator and event.initiator:getName() then
|
--- @param #SPAWN self
|
||||||
local EventPrefix = self:_GetPrefixFromDCSUnit( event.initiator )
|
-- @param Event#EVENTDATA Event
|
||||||
|
function SPAWN:_OnDeadOrCrash( Event )
|
||||||
|
self:F( self.SpawnTemplatePrefix, Event )
|
||||||
|
|
||||||
|
if Event.IniDCSUnit then
|
||||||
|
local EventPrefix = self:_GetPrefixFromDCSUnit( Event.IniDCSUnit )
|
||||||
|
self:T( { "Dead event: " .. EventPrefix, self.SpawnTemplatePrefix } )
|
||||||
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
if EventPrefix == self.SpawnTemplatePrefix or ( self.SpawnAliasPrefix and EventPrefix == self.SpawnAliasPrefix ) then
|
||||||
self:T( { "Dead event: " .. event.initiator:getName(), event } )
|
self.AliveUnits = self.AliveUnits - 1
|
||||||
-- local DestroyedUnit = Unit.getByName( EventPrefix )
|
self:T( "Alive Units: " .. self.AliveUnits )
|
||||||
-- if DestroyedUnit and DestroyedUnit.getLife() <= 1.0 then
|
|
||||||
--MessageToAll( "Mission command: unit " .. SpawnTemplatePrefix .. " crashed." , 5, EventPrefix .. '/Event')
|
|
||||||
self.AliveUnits = self.AliveUnits - 1
|
|
||||||
self:T( "Alive Units: " .. self.AliveUnits )
|
|
||||||
-- end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -19158,7 +19160,7 @@ end
|
|||||||
--- This function is called automatically by the Spawning scheduler.
|
--- This function is called automatically by the Spawning scheduler.
|
||||||
-- It is the internal worker method SPAWNing new Groups on the defined time intervals.
|
-- It is the internal worker method SPAWNing new Groups on the defined time intervals.
|
||||||
function SPAWN:_Scheduler()
|
function SPAWN:_Scheduler()
|
||||||
self:F( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } )
|
self:F2( { "_Scheduler", self.SpawnTemplatePrefix, self.SpawnAliasPrefix, self.SpawnIndex, self.SpawnMaxGroups, self.SpawnMaxUnitsAlive } )
|
||||||
|
|
||||||
-- Validate if there are still groups left in the batch...
|
-- Validate if there are still groups left in the batch...
|
||||||
self:Spawn()
|
self:Spawn()
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
-- Tests Gudauta
|
-- Tests Gudauta
|
||||||
-- --------------
|
-- --------------
|
||||||
-- Limited spawning of groups, scheduled every 30 seconds ...
|
-- Limited spawning of groups, scheduled every 30 seconds ...
|
||||||
Spawn_Plane_Limited_Scheduled = SPAWN:New( "Spawn Plane Limited Scheduled" ):Limit( 2, 20 ):SpawnScheduled( 30, 0 )
|
Spawn_Plane_Limited_Scheduled = SPAWN:New( "Spawn Plane Limited Scheduled" ):Limit( 4, 20 ):SpawnScheduled( 30, 0 )
|
||||||
Spawn_Helicopter_Limited_Scheduled = SPAWN:New( "Spawn Helicopter Limited Scheduled" ):Limit( 2, 20 ):SpawnScheduled( 30, 0 )
|
Spawn_Helicopter_Limited_Scheduled = SPAWN:New( "Spawn Helicopter Limited Scheduled" ):Limit( 4, 20 ):SpawnScheduled( 30, 0 )
|
||||||
Spawn_Ground_Limited_Scheduled = SPAWN:New( "Spawn Vehicle Limited Scheduled" ):Limit( 2, 20 ):SpawnScheduled( 90, 0 )
|
Spawn_Ground_Limited_Scheduled = SPAWN:New( "Spawn Vehicle Limited Scheduled" ):Limit( 4, 20 ):SpawnScheduled( 90, 0 )
|
||||||
|
|
||||||
-- Tests Sukhumi
|
-- Tests Sukhumi
|
||||||
-- -------------
|
-- -------------
|
||||||
-- Limited spawning of groups, scheduled every seconds with destruction.
|
-- Limited spawning of groups, scheduled every seconds with destruction.
|
||||||
Spawn_Plane_Limited_Scheduled_RandomizeRoute = SPAWN:New( "Spawn Plane Limited Scheduled Destroy" ):Limit( 5, 20 ):SpawnScheduled( 10, 0 )
|
Spawn_Plane_Limited_Scheduled_RandomizeRoute = SPAWN:New( "Spawn Plane Limited Scheduled Destroy" ):Limit( 4, 20 ):SpawnScheduled( 10, 0 )
|
||||||
Spawn_Helicopter_Limited_Scheduled_RandomizeRoute = SPAWN:New( "Spawn Helicopter Limited Scheduled Destroy" ):Limit( 5, 20 ):SpawnScheduled( 10, 0 )
|
Spawn_Helicopter_Limited_Scheduled_RandomizeRoute = SPAWN:New( "Spawn Helicopter Limited Scheduled Destroy" ):Limit( 4, 20 ):SpawnScheduled( 10, 0 )
|
||||||
Spawn_Vehicle_Limited_Scheduled_RandomizeRoute = SPAWN:New( "Spawn Vehicle Limited Scheduled Destroy" ):Limit( 5, 20 ):SpawnScheduled( 10, 0 )
|
Spawn_Vehicle_Limited_Scheduled_RandomizeRoute = SPAWN:New( "Spawn Vehicle Limited Scheduled Destroy" ):Limit( 4, 20 ):SpawnScheduled( 10, 0 )
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user