Skip to content

Instantly share code, notes, and snippets.

@danreeves
Last active April 30, 2021 20:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danreeves/5907d291f4319f63e0b4bdfcc002af83 to your computer and use it in GitHub Desktop.
Save danreeves/5907d291f4319f63e0b4bdfcc002af83 to your computer and use it in GitHub Desktop.
How to use SharedState
local function encode_table(tbl)
return cjson.encode(tbl)
end
local function decode_table(str)
return cjson.decode(str)
end
local shared_state_spec = {
server = {
some_table = {
default_value = {},
type = "table",
composite_keys = {},
encode = encode_table,
decode = decode_table,
},
some_number = {
default_value = 0,
type = "number",
composite_keys = {},
},
},
peer = {}
}
SharedState.validate_spec(shared_state_spec)
-- Init
local shared_state = SharedState:new(
"my_state_name",
shared_state_spec,
is_server,
network_server,
server_peer_id,
own_peer_id
)
shared_state:register_rpcs(network_event_delegate)
-- Set a value (only on server)
local key = shared_state:get_key("some_table")
shared_state:server_set(key, { my = "value" })
-- Read a value (on client or server)
local key = shared_state:get_key("some_table")
local some_table = shared_state:server_get(key)
-- Clean up after yourself
shared_state:unregister_rpcs()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment