By Mullet Mafia Dev | Download | Source
Dice Manager is an elegant solution to solving the ever-challenging memory-posed problem of connections. Utilizing Dice Manager, you can manage your connections, custom wrap calls, and create a queue task scheduler. Dice Manager provides all the barebone tools you can use to hook events & custom connections to, allowing you to avoid the hassle of table.insert for all of your event loggings by using the :ConnectKey() method.
Manager.set(properties)Set the properties of the manager:
properties = dictionary
properties['Debug'] = bool -- true (on) or false (off)
properties['RunService'] = 'Stepped' or 'Heartbeat'
.wait([time])An accurate wait function that takes a given time after the time is met more accurately than wait()
Example:
local function run()
print('running!')
end
Manager.wait(50) -- wait 50 seconds to run
run()Returns
-- Stepped:
time -- The duration (in seconds) that RunService has been running for
step -- The time (in seconds) that has elapsed since the previous frame
-- Heartbeat:
step -- The time (in seconds) that has elapsed since the previous frameThe parameters of RunService.Stepped or RunService.Heartbeat are returned.
.wrap(function)Supply a function parameter to create a custom coroutine.wrap() function that acts the same except gives you a reliable stack trace when the function errors.
Example:
local function run()
print('running!')
print('break' + 100)
end
Manager.wrap(run).spawn(function)Supply a function parameter to create a custom coroutine.wrap() function that acts the same except you won't receive the errors caused, using pcall.
Example:
local function run()
print('running!')
print('the next line breaks, but the function wont print the error')
print('break' + 100)
end
Manager.spawn(run).delay(time,function)An accurate delay function that takes a given time & a function, and runs after the time is met more accurately than wait() & built-in delay()
Example:
local function run()
print('running after 5 seconds passed')
end
Manager.delay(5,run).garbage(time,instance)An accurate delay function that takes a given time & an instance, and runs after the time is met more accurately than wait() & built-in Debris:AddItem()
Example:
local obj = instance.new('Part')
obj.Parent = workspace
obj.Anchored = true
Manager.garbage(5,obj):Connect(function)
:Connect(RBXScriptConnection)Supply a function or RBXScriptConnection type. Returns a dictionary with methods.
Returns:
control = dictionary
control:Fire(...)
control:Disconnect()Calling :Fire() only works if the supplied parameter to :Connect() was a function. :Disconnect() disconnects all RBXScriptConnection or functions supplied in the :Connect() method. Optional parameters to :Fire(...) is allowed.
Example:
local function run(text)
print(text)
end
local event = Manager:Connect(run)
event:Fire('fired'):ConnectKey(key,function)
:ConnectKey(key,RBXScriptConnection)Supply a key along with a function or RBXScriptConnection type. Returns a dictionary with methods. Locks the provided functions/signals to a key.
Returns:
control = dictionary
control:Fire(...)
control:Disconnect()Calling :Fire() only works if the supplied parameter to :ConnectKey() was a function. :Disconnect() disconnects all RBXScriptConnection or functions supplied in the :ConnectKey() method. Optional parameters to :Fire(...) is allowed.
Example:
local function run(text)
print(text)
end
local event = Manager:ConnectKey('Keepsake',run)
event:Fire('connection linked to a key'):FireKey(key[,paramaters])Fire all of the connections on a key with the given parameters.
Example:
Manager:ConnectKey('Keepsake',function(param)
print('1:',param)
end)
Manager:ConnectKey('Keepsake',function(param)
print('2:',param)
end)
Manager:FireKey('Keepsake','Running!'):DisconnectKey(key)With the supplied key, disconnect all connections linked to the key.
Example:
Manager:ConnectKey('Keepsake',game:GetService('RunService').Heartbeat:Connect(function()
print('running on key "Keepsake"!')
end))
Manager:ConnectKey('Keepsake',game:GetService('RunService').Heartbeat:Connect(function()
print('running on key "Keepsake" as well omg!')
end))
game:GetService('RunService').Heartbeat:Wait()
Manager:DisconnectKey('Keepsake') -- disconnects all functions on the key:Task([targetFPS])Supply a target FPS to run on an independent channel or leave empty to run on the 60hz default (60 FPS). Create a task scheduler.
Returns:
control = dictionary
control:Queue(function)
control:Pause()
control:Resume()
control:Wait()
control:Enabled()
control:Disconnect()Supply a function to Queue() to run a function in the order the function was passed in.
Example:
local scheduler = Manager:Task(30)
for index = 1,100 do
scheduler:Queue(function()
print('number:',index)
end)
if index == 50 then
scheduler:Pause()
end
end
print('Stopped at 50, starting again')
wait(2)
scheduler:Resume()
print('Finished')
scheduler:Disconnect()