ConfigAPI: Difference between revisions

From FiguraMC
Add silly little tutorial :3
PenguinEncounter (talk | contribs)
m fix busted links
Tag: 2017 source edit
 
(5 intermediate revisions by 2 users not shown)
Line 5: Line 5:
ConfigAPI is available as the global <code>config</code> variable.
ConfigAPI is available as the global <code>config</code> variable.


To begin with, create a config file. This can be done with either a script or a /figura run command; it's safest to use a script in an IDE to have syntax highlighting and avoid errors. <syntaxhighlight lang="lua">
== Data types ==
config:setName("variablePersistence")
-- All keys must be strings!
config:save("pantsColor", vec(0.5, 0.8, 0.1))
config:save("hatVisible", true)
config:save("legLength", 5)
 
</syntaxhighlight>Run this script by selecting the avatar it's under. Once it's run, check the existence of the <code>variablePersistence.json</code> file at <code>figura/config</code>. If it's there, that code can be deleted. Next, make some code to read the data in that file when the script is loaded. <syntaxhighlight lang="lua">
config:setName("variablePersistence")
local hatVisible = config:load("hatVisible")
local legLength = config:load("legLength")
local pantsColor = config:load("pantsColor")
 
function pings.updateFromConfig(hat, leg, pants)
    models.model.root.Head.Hat:setVisible(hat)
 
    models.model.root.LeftLeg:setScale(1, leg, 1)
    models.model.root.RightLeg:setScale(1, leg, 1)
   
    models.model.root.LeftLeg["Left Pants"]:setColor(pants)
    models.model.root.RightLeg["Right Pants"]:setColor(pants)
end
 
pings.updateFromConfig(hatVisible, legLength, pantsColor)
</syntaxhighlight>Finally, make some code that updates the config when you change values.<syntaxhighlight lang="lua">
-- Check if host:isHost() to ensure that the config:save only runs for the host
function pings.toggleHat(state)
    models.model.root.Head.Hat:setVisible(state)
    if host:isHost() then
        config:save("hatVisible", state)
    end
end
 
function pings.scaleLegs(scale)
    models.model.root.LeftLeg:setScale(1, scale, 1)
    models.model.root.RightLeg:setScale(1, scale, 1)
    if host:isHost() then
        config:save("legLength", scale)
    end
end
 
function pings.colorPants(rgb)
    models.model.root.LeftLeg["Left Pants"]:setColor(rgb)
    models.model.root.RightLeg["Right Pants"]:setColor(rgb)
    if host:isHost() then
        config:save("pantsColor", rgb)
    end
end
</syntaxhighlight>
== Data Types ==
Only some data types are supported by ConfigAPI. All other data types will be converted to {{type|nil}}. The supported data types are:
Only some data types are supported by ConfigAPI. All other data types will be converted to {{type|nil}}. The supported data types are:
* {{type|nil}}
* {{type|nil}}
Line 63: Line 14:
* all types of {{type|Vector}}
* all types of {{type|Vector}}
* all types of {{type|Matrix}}
* all types of {{type|Matrix}}
== ConfigAPI Methods ==
== ConfigAPI methods ==


=== Configuration Switching ===
=== Configuration switching ===


==== setName ====
==== setName ====
Line 100: Line 51:
</syntaxhighlight>
</syntaxhighlight>


=== Reading and Writing Data ===
=== Reading and writing data ===
==== load ====
==== load ====
----
----
Read a saved value from the active configuration file (see [[ConfigAPI#ConfigAPI:setName|setName]]) by key and return it.
Read a saved value from the active configuration file (see [[ConfigAPI#setName|setName]]) by key and return it.
If no key is given, return all of the saved keys and values in a table.
If no key is given, return all of the saved keys and values in a table.


Line 125: Line 76:
==== save ====
==== save ====
----
----
Associate a key with a value in the active configuration file (see [[ConfigAPI#ConfigAPI:setName|setName]].) Only some types of values are allowed; see [[ConfigAPI#Data Types|Data Types]] for details.
Associate a key with a value in the active configuration file (see [[ConfigAPI#setName|setName]].) Only some types of values are allowed; see [[ConfigAPI#Data Types|Data Types]] for details.


If {{type|nil}} is provided as the value, then the key is removed from the file.
If {{type|nil}} is provided as the value, then the key is removed from the file.
Line 140: Line 91:
config:save("my_value", "Figura Wiki")
config:save("my_value", "Figura Wiki")
</syntaxhighlight>
</syntaxhighlight>
== See also ==
* [[Tutorials/Persisting-Variables|Persisting Variables]] (tutorial)


== Navigation ==
== Navigation ==
{{Navbox documentation}}
{{Navbox documentation}}

Latest revision as of 22:39, 6 October 2024

This API is only available on the host.

For more information, see Pings.

The ConfigAPI allows storing and loading data between reloads of your avatar.

ConfigAPI is available as the global config variable.

Data types

Only some data types are supported by ConfigAPI. All other data types will be converted to nil. The supported data types are:

ConfigAPI methods

Configuration switching

setName


Also available as ConfigAPI:name.

Sets the name of the configuration file to read and write data to. By default, the name of the configuration file is the same as the name of the currently loaded avatar.

Arguments Return Type
setName(name string) self ConfigAPI
config:setName("my_config_file_name")

getName


Returns the name of the active configuration file.

Arguments Return Type
getName() string
-- Print the active configuration file's name.
print(config:getName())

Reading and writing data

load


Read a saved value from the active configuration file (see setName) by key and return it. If no key is given, return all of the saved keys and values in a table.

Arguments Return Type
load(key string) any | nil
load() table
-- Print all saved values.
printTable(config:load())
-- Print one specific value.
print(config:load("my_value"))

save


Associate a key with a value in the active configuration file (see setName.) Only some types of values are allowed; see Data Types for details.

If nil is provided as the value, then the key is removed from the file.

Arguments Return Type
save(key string, value any | nil) self ConfigAPI
-- Save a value to be used later.
config:save("my_value", "Figura Wiki")

See also

Navigation

Documentation
Globals
APIs (Types)
Visuals (Types)
Other Types
Enums