| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- Manager = class()
- function Manager:init(manages)
- self.objects = {}
- self.manages = self.manages or manages
- end
- function Manager:update()
- table.with(self.objects, 'update')
- end
- function Manager:paused()
- table.with(self.objects, 'paused')
- end
- function Manager:add(kind, vars)
- if type(kind) == 'string' then kind = data[self.manages][kind] end
- local object = kind()
- table.merge(vars, object, true)
- f.exe(object.activate, object)
- self.objects[object] = object
- return object
- end
- function Manager:remove(object)
- if not object then return end
- f.exe(object.deactivate, object)
- self.objects[object] = nil
- end
- function Manager:get(id)
- return self.objects[id]
- end
- function Manager:each(fn)
- table.each(self.objects, fn)
- end
- function Manager:filter(fn)
- return table.values(table.filter(self.objects, fn))
- end
- function Manager:count()
- if not next(self.objects) then return 0 end
- return table.count(self.objects)
- end
|