mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Update Set.lua
Break loop after x tries
This commit is contained in:
parent
d469374ed5
commit
e9f92d2250
@ -5411,10 +5411,12 @@ do -- SET_ZONE
|
|||||||
|
|
||||||
--- Get a random zone from the set.
|
--- Get a random zone from the set.
|
||||||
-- @param #SET_ZONE self
|
-- @param #SET_ZONE self
|
||||||
|
-- @param #number margin Number of tries to find a zone
|
||||||
-- @return Core.Zone#ZONE_BASE The random Zone.
|
-- @return Core.Zone#ZONE_BASE The random Zone.
|
||||||
-- @return #nil if no zone in the collection.
|
-- @return #nil if no zone in the collection.
|
||||||
function SET_ZONE:GetRandomZone()
|
function SET_ZONE:GetRandomZone(margin)
|
||||||
|
|
||||||
|
local margin = margin or 100
|
||||||
if self:Count() ~= 0 then
|
if self:Count() ~= 0 then
|
||||||
|
|
||||||
local Index = self.Index
|
local Index = self.Index
|
||||||
@ -5423,9 +5425,11 @@ do -- SET_ZONE
|
|||||||
-- Loop until a zone has been found.
|
-- Loop until a zone has been found.
|
||||||
-- The :GetZoneMaybe() call will evaluate the probability for the zone to be selected.
|
-- The :GetZoneMaybe() call will evaluate the probability for the zone to be selected.
|
||||||
-- If the zone is not selected, then nil is returned by :GetZoneMaybe() and the loop continues!
|
-- If the zone is not selected, then nil is returned by :GetZoneMaybe() and the loop continues!
|
||||||
while not ZoneFound do
|
local counter = 0
|
||||||
|
while (not ZoneFound) or (counter < margin) do
|
||||||
local ZoneRandom = math.random( 1, #Index )
|
local ZoneRandom = math.random( 1, #Index )
|
||||||
ZoneFound = self.Set[Index[ZoneRandom]]:GetZoneMaybe()
|
ZoneFound = self.Set[Index[ZoneRandom]]:GetZoneMaybe()
|
||||||
|
counter = counter + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
return ZoneFound
|
return ZoneFound
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user