This commit is contained in:
Applevangelist 2024-01-03 18:03:53 +01:00
parent 90e7711788
commit e5fbaeafcd
3 changed files with 30 additions and 4 deletions

View File

@ -455,7 +455,7 @@ do -- SET_BASE
--- Gets a random object from the @{Core.Set#SET_BASE} and derived classes. --- Gets a random object from the @{Core.Set#SET_BASE} and derived classes.
-- @param #SET_BASE self -- @param #SET_BASE self
-- @return Core.Base#BASE -- @return Core.Base#BASE or nil if none found or the SET is empty!
function SET_BASE:GetRandom() function SET_BASE:GetRandom()
local tablemax = 0 local tablemax = 0
for _,_ind in pairs(self.Index) do for _,_ind in pairs(self.Index) do
@ -466,6 +466,23 @@ do -- SET_BASE
self:T3( { RandomItem } ) self:T3( { RandomItem } )
return RandomItem return RandomItem
end end
--- Gets a random object from the @{Core.Set#SET_BASE} and derived classes. A bit slower than @{#SET_BASE.GetRandom}() but tries to ensure you get an object back if the SET is not empty.
-- @param #SET_BASE self
-- @return Core.Base#BASE or nil if the SET is empty!
function SET_BASE:GetRandomSurely()
local tablemax = 0
local sorted = {}
for _,_obj in pairs(self.Set) do
tablemax = tablemax + 1
sorted[tablemax] = _obj
end
--local tablemax = table.maxn(self.Index)
--local RandomItem = self.Set[self.Index[math.random(1,tablemax)]]
local RandomItem = sorted[math.random(1,tablemax)]
self:T3( { RandomItem } )
return RandomItem
end
--- Retrieves the amount of objects in the @{Core.Set#SET_BASE} and derived classes. --- Retrieves the amount of objects in the @{Core.Set#SET_BASE} and derived classes.
-- @param #SET_BASE self -- @param #SET_BASE self
@ -8215,9 +8232,15 @@ do -- SET_SCENERY
-- @param #SET_SCENERY self -- @param #SET_SCENERY self
-- @return Core.Point#COORDINATE The center coordinate of all the objects in the set. -- @return Core.Point#COORDINATE The center coordinate of all the objects in the set.
function SET_SCENERY:GetCoordinate() function SET_SCENERY:GetCoordinate()
local Coordinate = self:GetRandom():GetCoordinate() local Coordinate = COORDINATE:New({0,0,0})
local Item = self:GetRandomSurely()
if Item then
Coordinate:GetCoordinate()
end
local x1 = Coordinate.x local x1 = Coordinate.x
local x2 = Coordinate.x local x2 = Coordinate.x
local y1 = Coordinate.y local y1 = Coordinate.y

View File

@ -80,6 +80,7 @@ __Moose.Include( 'Functional\\Autolase.lua' )
__Moose.Include( 'Functional\\AICSAR.lua' ) __Moose.Include( 'Functional\\AICSAR.lua' )
__Moose.Include( 'Functional\\AmmoTruck.lua' ) __Moose.Include( 'Functional\\AmmoTruck.lua' )
__Moose.Include( 'Functional\\Tiresias.lua' ) __Moose.Include( 'Functional\\Tiresias.lua' )
__Moose.Include( 'Functional\\Stratego.lua' )
__Moose.Include( 'Ops\\Airboss.lua' ) __Moose.Include( 'Ops\\Airboss.lua' )
__Moose.Include( 'Ops\\RecoveryTanker.lua' ) __Moose.Include( 'Ops\\RecoveryTanker.lua' )

View File

@ -71,6 +71,8 @@ Functional/Autolase.lua
Functional/AICSAR.lua Functional/AICSAR.lua
Functional/AmmoTruck.lua Functional/AmmoTruck.lua
Functional/ZoneGoalCargo.lua Functional/ZoneGoalCargo.lua
Functional/Stratego.lua
Functional/Tiresias.lua
Ops/Airboss.lua Ops/Airboss.lua
Ops/RecoveryTanker.lua Ops/RecoveryTanker.lua