Refactor state management, other changes

- State information stored in a table that is automatically populated
- Changing state data handled by function instead of duplicating code
- Add configuration to print all configs on skin load
- Add debugPrint function which prints variable and returns it
- Use local scope for snore functions
This commit is contained in:
NullBite 2022-03-20 23:43:27 -04:00
parent 752aca78c7
commit 7de0e7f399
Signed by: nullbite
GPG Key ID: 6C4D545385D4925A

View File

@ -90,34 +90,50 @@ function mergeTable(tb1, tb2)
if type(k)=="number" then if type(k)=="number" then
table.insert(t, v) table.insert(t, v)
else else
if t[k]~=nil then if t[k]==nil then
t[k]=v t[k]=v
end end
end end
end end
return t
end end
function debugPrint(var)
print(dumpTable(var))
return var
end
-- }}} -- }}}
-- local state variables (do not access within pings) -- -- master state variables and configuration (do not access within pings) --
-- armor_enabled=data.load("armor_enabled") do
-- if armor_enabled==nil then local defaults={
-- armor_enabled=true ["armor_enabled"]=true,
-- else ["vanilla_enabled"]=false,
-- armor_enabled=armor_enabled=="true" ["snore_enabled"]=true,
-- end ["print_settings"]=false
-- vanilla_enabled=data.load("vanilla_enabled") }
-- if vanilla_enabled==nil then
-- vanilla_enabled=false skin_state=mergeTable(
-- else map(unstring,data.loadAll()),
-- vanilla_enabled=vanilla_enabled=="true" defaults)
-- end end
-- snore_enabled=data.load("snore_enabled")
-- if snore_enabled==nil then if skin_state.print_settings==true then
-- snore_enabled=false print("Settings:")
-- else for k, v in pairs(skin_state) do
-- snore_enabled=snore_enabled=="true" print(tostring(k)..": "..tostring(v))
-- end end
state={} end
function setState(name, state)
if state == nil then
skin_state[name]=not skin_state[name]
else
skin_state[name]=state
end
data.save(name, skin_state[name])
end
-- Parts -- -- Parts --
@ -136,7 +152,6 @@ for _, v in pairs(VANILLA_INNER) do table.insert(VANILLA_ALL,v) end
for _, v in pairs(VANILLA_OUTER) do table.insert(VANILLA_ALL,v) end for _, v in pairs(VANILLA_OUTER) do table.insert(VANILLA_ALL,v) end
SNORES={"snore-1", "snore-2", "snore-3"} SNORES={"snore-1", "snore-2", "snore-3"}
snore_index=1
-- Expression change -- {{{ -- Expression change -- {{{
do do
@ -202,13 +217,8 @@ end
--- Toggle Armor --- --- Toggle Armor ---
function setArmor(state) function setArmor(state)
if state == nil then setState("armor_enabled", state)
armor_enabled=not armor_enabled ping.setArmor(skin_state.armor_enabled)
else
armor_enabled=state
end
data.save("armor_enabled", armor_enabled)
ping.setArmor(armor_enabled)
end end
function ping.setArmor(state) function ping.setArmor(state)
for key, value in pairs(armor_model) do for key, value in pairs(armor_model) do
@ -216,35 +226,31 @@ function ping.setArmor(state)
end end
end end
function snore() do
local snore_enabled=false
local snore_index=1
function snore()
if snore_enabled then if snore_enabled then
sound.playCustomSound(SNORES[snore_index], player.getPos(), vectors.of{20,1}) sound.playCustomSound(SNORES[snore_index],
player.getPos(), vectors.of{20,1})
snore_index=snore_index%#SNORES+1 snore_index=snore_index%#SNORES+1
end end
end end
function setSnoring(state) function setSnoring(state)
if state == nil then setState("snore_enabled", state)
snore_enabled=not snore_enabled ping.setSnoring(skin_state.snore_enabled)
else end
function ping.setSnoring(state)
snore_enabled=state snore_enabled=state
end end
data.save("snore_enabled", snore_enabled)
end
function ping.setSnoring(state)
snore_enabled=state
end end
--- Toggle Vanilla --- --- Toggle Vanilla ---
function setVanilla(state) function setVanilla(state)
if state == nil then setState("vanilla_enabled", state)
vanilla_enabled=not vanilla_enabled ping.setVanilla(skin_state.vanilla_enabled)
else
vanilla_enabled=state
end
data.save("vanilla_enabled", vanilla_enabled)
ping.setVanilla(vanilla_enabled)
end end
function ping.setVanilla(state) function ping.setVanilla(state)
@ -258,9 +264,9 @@ function ping.setVanilla(state)
end end
function syncState() function syncState()
ping.setArmor(armor_enabled) ping.setArmor(skin_state.armor_enabled)
ping.setVanilla(vanilla_enabled) ping.setVanilla(skin_state.vanilla_enabled)
ping.setSnoring(snore_enabled) ping.setSnoring(skin_state.snore_enabled)
end end
-- }}} -- }}}
@ -379,7 +385,7 @@ function onCommand(input)
input=splitstring(input) input=splitstring(input)
if input[1] == chat_prefix .. "vanilla" then if input[1] == chat_prefix .. "vanilla" then
setVanilla() setVanilla()
print("Vanilla skin is now " .. (vanilla_enabled and "enabled" or "disabled")) print("Vanilla skin is now " .. (skin_state.vanilla_enabled and "enabled" or "disabled"))
end end
if input[1] == chat_prefix .. "toggle_custom" then if input[1] == chat_prefix .. "toggle_custom" then
for key, value in pairs(model) do for key, value in pairs(model) do
@ -403,12 +409,16 @@ function onCommand(input)
if input[1] == chat_prefix .. "snore" then if input[1] == chat_prefix .. "snore" then
if input[2] == "toggle" or #input==1 then if input[2] == "toggle" or #input==1 then
setSnoring() setSnoring()
log("Snoring is now " .. (snore_enabled and "enabled" or "disabled")) log("Snoring is now " .. (skin_state.snore_enabled and "enabled" or "disabled"))
end end
end end
if input[1] == chat_prefix .. "armor" then if input[1] == chat_prefix .. "armor" then
setArmor() setArmor()
log("Armor is now " .. (armor_enabled and "enabled" or "disabled")) log("Armor is now " .. (skin_state.armor_enabled and "enabled" or "disabled"))
end
if input[1] == chat_prefix .. "settings" then
setState("print_settings")
log("Printing of settings on skin load is now " .. (skin_state.print_settings and "enabled" or "disabled"))
end end
end end