BattleDictionary.lua 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. BattleDictionary = {}
  2. function BattleDictionary.New()
  3. local o = {}
  4. setmetatable(o, BattleDictionary)
  5. BattleDictionary.__index = BattleDictionary
  6. o.kL = BattleList.New()
  7. o.vL = BattleList.New()
  8. o.kList = o.kL.buffer
  9. o.vList = o.vL.buffer
  10. o.kvList = {}
  11. o.size = 0
  12. return o
  13. end
  14. function BattleDictionary:Add(k,v)
  15. if not self.kvList[k] then
  16. self.size = self.size + 1
  17. self.kvList[k] = v
  18. self.kL:Add(k)
  19. self.vL:Add(v)
  20. end
  21. end
  22. function BattleDictionary:Remove(k)
  23. if self.kvList[k] then
  24. for i=1, self.size do
  25. if self.vList[i] == self.kvList[k] then
  26. self.size = self.size - 1
  27. self.kL:Remove(i)
  28. self.vL:Remove(i)
  29. self.kvList[k] = nil
  30. break
  31. end
  32. end
  33. end
  34. end
  35. function BattleDictionary:Get(k)
  36. return self.kvList[k]
  37. end
  38. function BattleDictionary:Set(k,v)
  39. self:Remove(k)
  40. self:Add(k,v)
  41. end
  42. function BattleDictionary:Clear()
  43. self.kL:Clear()
  44. self.vL:Clear()
  45. self.kvList = {}
  46. self.size = 0
  47. end
  48. function BattleDictionary:Count()
  49. return self.size
  50. end
  51. function BattleDictionary:Foreach(func)
  52. for i = 1, self.size do
  53. if func then
  54. if func(self.kList[i], self.vList[i]) == "break" then
  55. break
  56. end
  57. end
  58. end
  59. end