manager.lua 947 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. Manager = class()
  2. function Manager:init(manages)
  3. self.objects = {}
  4. self.manages = self.manages or manages
  5. end
  6. function Manager:update()
  7. table.with(self.objects, 'update')
  8. end
  9. function Manager:paused()
  10. table.with(self.objects, 'paused')
  11. end
  12. function Manager:add(kind, vars)
  13. if type(kind) == 'string' then kind = data[self.manages][kind] end
  14. local object = kind()
  15. table.merge(vars, object, true)
  16. f.exe(object.activate, object)
  17. self.objects[object] = object
  18. return object
  19. end
  20. function Manager:remove(object)
  21. if not object then return end
  22. f.exe(object.deactivate, object)
  23. self.objects[object] = nil
  24. end
  25. function Manager:get(id)
  26. return self.objects[id]
  27. end
  28. function Manager:each(fn)
  29. table.each(self.objects, fn)
  30. end
  31. function Manager:filter(fn)
  32. return table.values(table.filter(self.objects, fn))
  33. end
  34. function Manager:count()
  35. if not next(self.objects) then return 0 end
  36. return table.count(self.objects)
  37. end