24 lines
525 B
Lua
24 lines
525 B
Lua
BattleObjectPool = {}
|
|
function BattleObjectPool.New(onCreate)
|
|
local o = {}
|
|
setmetatable(o, BattleObjectPool)
|
|
BattleObjectPool.__index = BattleObjectPool
|
|
o.buffer = {}
|
|
o.size = 0
|
|
o.onCreate = onCreate
|
|
return o
|
|
end
|
|
|
|
function BattleObjectPool:Get(...)
|
|
local e = self.buffer[self.size]
|
|
if not e then
|
|
return self.onCreate(...)
|
|
end
|
|
self.size = self.size - 1
|
|
return e
|
|
end
|
|
|
|
function BattleObjectPool:Put(item)
|
|
self.size = self.size + 1
|
|
self.buffer[self.size] = item
|
|
end |