Added @description annotations to all relevant functions and event handlers in both client and server framework modules for improved code documentation and clarity.
119 lines
3.6 KiB
Lua
119 lines
3.6 KiB
Lua
---@diagnostic disable: duplicate-set-field
|
|
Framework = Framework or {}
|
|
|
|
local jobsRegisteredTable = {}
|
|
local invertedJobsRegisteredTable = {}
|
|
local globalState = GlobalState
|
|
|
|
globalState.jobcounts = {}
|
|
|
|
---@description This will get the name of the in use resource.
|
|
---@return string
|
|
Framework.GetResourceName = function()
|
|
return 'default'
|
|
end
|
|
|
|
---@description This is an internal function that will be used to retrieve job counts later.
|
|
---@param jobName string
|
|
---@return number
|
|
Framework.GetJobCount = function(jobName)
|
|
if not jobsRegisteredTable[jobName] then return 0 end
|
|
local count = 0
|
|
for _ in pairs(jobsRegisteredTable[jobName]) do
|
|
count = count + 1
|
|
end
|
|
return count
|
|
end
|
|
|
|
---@description This will allow passing a table of job names and returning a sum of the total count.
|
|
---@param tbl any
|
|
---@return number
|
|
Framework.GetJobCountTotal = function(tbl)
|
|
local total = 0
|
|
for _, jobName in pairs(tbl) do
|
|
total = total + Framework.GetJobCount(jobName)
|
|
end
|
|
return total
|
|
end
|
|
|
|
---@description This will return a list of player sources for a given job.
|
|
---@param jobName string
|
|
---@return table
|
|
Framework.GetPlayerSourcesByJob = function(jobName)
|
|
if not jobsRegisteredTable[jobName] then return {} end
|
|
local sources = {}
|
|
for src in pairs(jobsRegisteredTable[jobName]) do
|
|
table.insert(sources, src)
|
|
end
|
|
return sources
|
|
end
|
|
|
|
---@description This will update the cached tables for job counts.
|
|
---This is used to track how many players are in a job.
|
|
---@param src number
|
|
---@param jobName string
|
|
Framework.AddJobCount = function(src, jobName)
|
|
if not src or not jobName then return false end
|
|
if not jobsRegisteredTable[jobName] then jobsRegisteredTable[jobName] = {} end
|
|
if jobsRegisteredTable[jobName][src] then return false end
|
|
|
|
jobsRegisteredTable[jobName][src] = true
|
|
invertedJobsRegisteredTable[src] = jobName
|
|
|
|
local newJobCounts = {}
|
|
for job, _ in pairs(jobsRegisteredTable) do
|
|
newJobCounts[job] = Framework.GetJobCount(job)
|
|
end
|
|
globalState.jobcounts = newJobCounts
|
|
|
|
return true
|
|
end
|
|
|
|
---@description This will return the job name for a given source.
|
|
---@param src number
|
|
Framework.SearchJobCountBySource = function(src)
|
|
return invertedJobsRegisteredTable[src]
|
|
end
|
|
|
|
---@description This will remove the job count for a given source.
|
|
---@param src number
|
|
---@param jobName string | nil
|
|
Framework.RemoveJobCount = function(src, jobName)
|
|
if not src then return false end
|
|
|
|
if not jobName then jobName = invertedJobsRegisteredTable[src] end
|
|
if not jobName then return false end
|
|
|
|
invertedJobsRegisteredTable[src] = nil
|
|
if jobsRegisteredTable[jobName] then
|
|
jobsRegisteredTable[jobName][src] = nil
|
|
end
|
|
|
|
local newJobCounts = {}
|
|
for job, _ in pairs(jobsRegisteredTable) do
|
|
local count = Framework.GetJobCount(job)
|
|
if count > 0 then
|
|
newJobCounts[job] = count
|
|
end
|
|
end
|
|
globalState.jobcounts = newJobCounts
|
|
|
|
return true
|
|
end
|
|
|
|
---@description Event handler for when a player's job changes, updates job counts accordingly
|
|
---@param src number
|
|
---@param newJobName string
|
|
AddEventHandler('community_bridge:Server:OnPlayerJobChange', function(src, newJobName)
|
|
local previousJob = invertedJobsRegisteredTable[src]
|
|
if previousJob then Framework.RemoveJobCount(src, previousJob) end
|
|
if newJobName then Framework.AddJobCount(src, newJobName) end
|
|
end)
|
|
|
|
---@description Event handler for when a player unloads, removes them from job counts
|
|
---@param src number
|
|
AddEventHandler('community_bridge:Server:OnPlayerUnload', function(src)
|
|
Framework.RemoveJobCount(src)
|
|
end)
|
|
|
|
return Framework |