Prepopulate local_state table
This should ensure variables always exist on non-host clients
This commit is contained in:
parent
dfb501a3c0
commit
dc630c863a
53
script.lua
53
script.lua
@ -211,8 +211,13 @@ function lerp(a, b, t) return a + ((b - a) * t) end
|
|||||||
function rad(x) return x*math.pi/180 end
|
function rad(x) return x*math.pi/180 end
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- master state variables and configuration (do not access within pings) -- {{{
|
-- Master and local state variables -- {{{
|
||||||
if client.isHost() then
|
-- Local State (these are copied by pings at runtime) --
|
||||||
|
local_state={}
|
||||||
|
old_state={}
|
||||||
|
-- master state variables and configuration (do not access within pings) --
|
||||||
|
do
|
||||||
|
local is_host=client.isHost()
|
||||||
local defaults={
|
local defaults={
|
||||||
["armor_enabled"]=true,
|
["armor_enabled"]=true,
|
||||||
["vanilla_enabled"]=false,
|
["vanilla_enabled"]=false,
|
||||||
@ -223,17 +228,33 @@ if client.isHost() then
|
|||||||
["aquatic_enabled"]=false,
|
["aquatic_enabled"]=false,
|
||||||
["aquatic_override"]=false
|
["aquatic_override"]=false
|
||||||
}
|
}
|
||||||
|
function setLocalState()
|
||||||
local savedData=data.loadAll()
|
if is_host then
|
||||||
if savedData == nil then
|
for k, v in pairs(skin_state) do
|
||||||
for k, v in pairs(defaults) do
|
local_state[k]=v
|
||||||
data.save(k, v)
|
end
|
||||||
|
else
|
||||||
|
for k, v in pairs(defaults) do
|
||||||
|
if local_state[k] == nil then local_state[k]=v end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
savedData=data.loadAll()
|
return local_state
|
||||||
end
|
end
|
||||||
skin_state=mergeTable(
|
if is_host then
|
||||||
|
local savedData=data.loadAll()
|
||||||
|
if savedData == nil then
|
||||||
|
for k, v in pairs(defaults) do
|
||||||
|
data.save(k, v)
|
||||||
|
end
|
||||||
|
savedData=data.loadAll()
|
||||||
|
end
|
||||||
|
skin_state=mergeTable(
|
||||||
map(unstring,data.loadAll()),
|
map(unstring,data.loadAll()),
|
||||||
defaults)
|
defaults)
|
||||||
|
else
|
||||||
|
skin_state=defaults
|
||||||
|
end
|
||||||
|
setLocalState()
|
||||||
end
|
end
|
||||||
|
|
||||||
function printSettings()
|
function printSettings()
|
||||||
@ -255,16 +276,6 @@ function setState(name, state)
|
|||||||
data.save(name, skin_state[name])
|
data.save(name, skin_state[name])
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Local State (these are copied by pings at runtime) --
|
|
||||||
function getLocalState()
|
|
||||||
local ret={}
|
|
||||||
for k, v in pairs(skin_state) do
|
|
||||||
ret[k]=v
|
|
||||||
end
|
|
||||||
return ret
|
|
||||||
end
|
|
||||||
local_state={}
|
|
||||||
old_state={}
|
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- PartsManager -- {{{
|
-- PartsManager -- {{{
|
||||||
@ -613,7 +624,7 @@ end
|
|||||||
|
|
||||||
function syncState()
|
function syncState()
|
||||||
ping.setSnoring(skin_state.snore_enabled)
|
ping.setSnoring(skin_state.snore_enabled)
|
||||||
ping.syncState(getLocalState())
|
ping.syncState(setLocalState())
|
||||||
end
|
end
|
||||||
|
|
||||||
function pmRefresh()
|
function pmRefresh()
|
||||||
@ -879,7 +890,7 @@ function player_init()
|
|||||||
for k, v in pairs(reduce(mergeTable, map(recurseModelGroup, model))) do
|
for k, v in pairs(reduce(mergeTable, map(recurseModelGroup, model))) do
|
||||||
v.setEnabled(true)
|
v.setEnabled(true)
|
||||||
end
|
end
|
||||||
local_state=getLocalState()
|
setLocalState()
|
||||||
syncState()
|
syncState()
|
||||||
end
|
end
|
||||||
-- Initial configuration --
|
-- Initial configuration --
|
||||||
|
Loading…
x
Reference in New Issue
Block a user