Fixed bug with randomization

This commit is contained in:
svenvandevelde 2016-02-29 14:37:47 +01:00
parent d458355c58
commit d1fac8b8eb

View File

@ -41,6 +41,7 @@ function SPAWN:New( SpawnPrefix )
self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts. self.UnControlled = false -- When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts.
self.SpawnMaxGroupsAlive = 0 -- The maximum amount of groups that can be alive of SpawnPrefix at the same time. self.SpawnMaxGroupsAlive = 0 -- The maximum amount of groups that can be alive of SpawnPrefix at the same time.
self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned. self.SpawnMaxGroups = 0 -- The maximum amount of groups that can be spawned.
self.SpawnRandomize = false
else else
error( "SPAWN:New: There is no group declared in the mission editor with SpawnPrefix = '" .. SpawnPrefix .. "'" ) error( "SPAWN:New: There is no group declared in the mission editor with SpawnPrefix = '" .. SpawnPrefix .. "'" )
end end
@ -72,6 +73,7 @@ self:T( { SpawnStartPoint, SpawnEndPoint, SpawnRadius } )
self.SpawnStartPoint = SpawnStartPoint -- When the spawning occurs, randomize the route points from SpawnStartPoint. self.SpawnStartPoint = SpawnStartPoint -- When the spawning occurs, randomize the route points from SpawnStartPoint.
self.SpawnEndPoint = SpawnEndPoint -- When the spawning occurs, randomize the route points till SpawnEndPoint. self.SpawnEndPoint = SpawnEndPoint -- When the spawning occurs, randomize the route points till SpawnEndPoint.
self.SpawnRadius = SpawnRadius -- The Radius of randomization of the route points from SpawnStartPoint till SpawnEndPoint. self.SpawnRadius = SpawnRadius -- The Radius of randomization of the route points from SpawnStartPoint till SpawnEndPoint.
self.SpawnRandomize = true
return self return self
end end
@ -273,7 +275,7 @@ end
function SPAWN:Spawn( SpawnGroupName ) function SPAWN:Spawn( SpawnGroupName )
self:T( { self.SpawnPrefix, SpawnGroupName } ) self:T( { self.SpawnPrefix, SpawnGroupName } )
local SpawnTemplate = self:_Prepare( SpawnGroupName ) local SpawnTemplate = self:_Prepare( SpawnGroupName )
if self.SpawnStartPoint ~= 0 or self.SpawnEndPoint ~= 0 then if self.SpawnRandomize then
SpawnTemplate = self:_RandomizeRoute( SpawnTemplate ) SpawnTemplate = self:_RandomizeRoute( SpawnTemplate )
end end
_Database:Spawn( SpawnTemplate ) _Database:Spawn( SpawnTemplate )
@ -291,7 +293,7 @@ end
function SPAWN:SpawnWithIndex( SpawnIndex ) function SPAWN:SpawnWithIndex( SpawnIndex )
self:T( { self.SpawnPrefix, SpawnIndex } ) self:T( { self.SpawnPrefix, SpawnIndex } )
local SpawnTemplate = self:_Prepare( self:SpawnGroupName( SpawnIndex ) ) local SpawnTemplate = self:_Prepare( self:SpawnGroupName( SpawnIndex ) )
if self.SpawnStartPoint ~= 0 or self.SpawnEndPoint ~= 0 then if self.SpawnRandomize then
SpawnTemplate = self:_RandomizeRoute( SpawnTemplate ) SpawnTemplate = self:_RandomizeRoute( SpawnTemplate )
end end
_Database:Spawn( SpawnTemplate ) _Database:Spawn( SpawnTemplate )
@ -438,7 +440,7 @@ self:T( { CarrierUnit, TargetZonePrefix, NewGroupName, LateActivate } )
SpawnTemplate.route.points[1].alt = nil SpawnTemplate.route.points[1].alt = nil
SpawnTemplate.route.points[1].alt_type = nil SpawnTemplate.route.points[1].alt_type = nil
if SpawnStartPoint ~= 0 and SpawnEndPoint ~= 0 then if self.SpawnRandomize then
SpawnTemplate.route.points[RouteCount].x = TargetZonePos.x SpawnTemplate.route.points[RouteCount].x = TargetZonePos.x
SpawnTemplate.route.points[RouteCount].y = TargetZonePos.z SpawnTemplate.route.points[RouteCount].y = TargetZonePos.z
else else
@ -690,7 +692,7 @@ end
function SPAWN:_RandomizeRoute( SpawnTemplate ) function SPAWN:_RandomizeRoute( SpawnTemplate )
self:T( SpawnTemplate.name ) self:T( SpawnTemplate.name )
if self.SpawnStartPoint and self.SpawnEndPoint then if self.SpawnRandomize then
local RouteCount = table.getn( SpawnTemplate.route.points ) local RouteCount = table.getn( SpawnTemplate.route.points )
for t = self.SpawnStartPoint, RouteCount - self.SpawnEndPoint do for t = self.SpawnStartPoint, RouteCount - self.SpawnEndPoint do
SpawnTemplate.route.points[t].x = SpawnTemplate.route.points[t].x + math.random( self.SpawnRadius * -1, self.SpawnRadius ) SpawnTemplate.route.points[t].x = SpawnTemplate.route.points[t].x + math.random( self.SpawnRadius * -1, self.SpawnRadius )