1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-10 00:43:27 +02:00
ComfyFactorio/utils/datastore/supporters.lua
2023-11-11 23:59:17 +01:00

67 lines
1.4 KiB
Lua

-- created by Gerkiz for ComfyFactorio
local Token = require 'utils.token'
local Global = require 'utils.global'
local Server = require 'utils.server'
local Event = require 'utils.event'
local table = require 'utils.table'
local supporters_dataset = 'supporters'
local Public = {}
local this = {
supporters = {}
}
Global.register(
this,
function(tbl)
this = tbl
end
)
--- Checks if a player is a supporter
-- @param player_name <string>
-- @return <boolean>
function Public.is_supporter(key)
return this.supporters[key] ~= nil or false, this.supporters[key]
end
--- Writes the data called back from the server into the supporter table, clearing any previous entries
local sync_supporters_callback =
Token.register(
function(data)
if not data then
return
end
if not data.entries then
return
end
table.clear_table(this.supporters)
for k, v in pairs(data.entries) do
this.supporters[k] = v
end
end
)
--- Signals the server to retrieve the supporters dataset
function Public.sync_supporters()
Server.try_get_all_data(supporters_dataset, sync_supporters_callback)
end
Server.on_data_set_changed(
supporters_dataset,
function(data)
this.supporters[data.key] = data.value
end
)
Event.add(
Server.events.on_server_started,
function()
Public.sync_supporters()
end
)
return Public