BattleObjectPool.lua 551 B

123456789101112131415161718192021222324
  1. BattleObjectPool = {}
  2. function BattleObjectPool.New(onCreate)
  3. local o = {}
  4. setmetatable(o, BattleObjectPool)
  5. BattleObjectPool.__index = BattleObjectPool
  6. o.buffer = {}
  7. o.size = 0
  8. o.onCreate = onCreate
  9. return o
  10. end
  11. function BattleObjectPool:Get(...)
  12. local e = self.buffer[self.size]
  13. if not e then
  14. return self.onCreate(...)
  15. end
  16. self.size = self.size - 1
  17. return e
  18. end
  19. function BattleObjectPool:Put(item)
  20. self.size = self.size + 1
  21. self.buffer[self.size] = item
  22. end