Datastores • Logic • Systems • Serverside
local Container = {}
Container.__index = Container
function Container.new()
return setmetatable({services = {}}, Container)
end
function Container:register(name: string, provider: () -> any)
self.services[name] = provider
end
function Container:resolve(name: string)
return self.services[name]()
end
------------------------------------------------------
local Scheduler = {}
Scheduler.__index = Scheduler
function Scheduler.new()
return setmetatable({ tasks = {} }, Scheduler)
end
function Scheduler:add(fn)
table.insert(self.tasks, fn)
end
function Scheduler:start()
while true do
for _,taskFn in self.tasks do
taskFn()
end
task.wait()
end
end
------------------------------------------------------
local container = Container.new()
container:register("PlayerDataService", function()
local service = {}
function service:Get(id)
return {Coins = math.random(1,500), Level = math.random(1,50)}
end
return service
end)
local scheduler = Scheduler.new()
scheduler:add(function()
local DataService = container:resolve("PlayerDataService")
local data = DataService:Get(1)
end)
task.spawn(function()
scheduler:start()
end)