Implement
Implement
it can just be a
library, or set of libraries
--in mine, a collection is an interface that wraps around nameless libraries with
uniquely named fields, that can run some validation checks on each member of the
library
--lets me split up data across multiple files while keeping them consistent
--service
local service = {}
--core services
local global = _G.import "global"
local event = _G.import "event"
--util
local dictUtil = _G.import "dictUtil"
--data
local processCollection = _G.import "processCollection"
--roblox services
local runService = game:GetService("RunService")
local httpService = game:GetService("HttpService")
--private functions
local function processShared(player, eventName, playerSave, playerSession, ...)
local sharedProcess = processCollection:get(eventName)
if not sharedProcess then warn('No Shared process named ' .. eventName) return
end
--response
local response = {sharedProcess(player, playerSave, playerSession, ...)}
local status = table.remove(response, 1)
--setup network
if runService:IsServer() then
--processShared
local status, response = processShared(player, eventName, playerSave,
playerSession, unpack(args))
if status == true and func then
return {func(unpack(response))}
else
return {status}
end
end, {Returning=true})
end
else
function service.request(eventName, clientFunc, errorFunc, serverResponse,
getSharedResponse, makeRequestId)
return function(...)
--ref n
local player = game.Players.LocalPlayer
local playerSave = global.get('playerSave',player)
local playerSession = global.get('playerSession',player)
--processShared
local args = {...}
--
local status, response = processShared(player, eventName, playerSave,
playerSession, ...)
return status
end
end
end
return service