BattleQueue.lua 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. BattleQueue = {}
  2. function BattleQueue.New()
  3. local o = {}
  4. setmetatable(o, BattleQueue)
  5. BattleQueue.__index = BattleQueue
  6. o.head = -1
  7. o.rear = -1
  8. o.list = {}
  9. o.size = 0
  10. return o
  11. end
  12. function BattleQueue:Enqueue(e)
  13. if self.size == 0 then
  14. self.head = 0
  15. self.rear = 1
  16. self.size = 1
  17. self.list[self.rear] = e
  18. else
  19. self.rear = self.rear + 1
  20. self.list[self.rear] = e
  21. self.size = self.size + 1
  22. end
  23. end
  24. function BattleQueue:Dequeue()
  25. if self.size == 0 then
  26. error("lua queue is isEmpty")
  27. return nil
  28. end
  29. self.size = self.size - 1
  30. self.head = self.head + 1
  31. return self.list[self.head]
  32. end
  33. function BattleQueue:Clear()
  34. --self.list = {}
  35. self.size = 0
  36. self.head = -1
  37. self.rear = -1
  38. end
  39. function BattleQueue:Count()
  40. return self.size
  41. end
  42. function BattleQueue:Foreach(func)
  43. for i = self.head + 1, self.rear do
  44. if func then
  45. func(self.list[i])
  46. end
  47. end
  48. end
  49. function BattleQueue:Contain(e)
  50. for i = self.head + 1, self.rear do
  51. if e == self.list[i] then
  52. return true
  53. end
  54. end
  55. return false
  56. end