======Codex======
----
A **codex** is a data type with its data stored as key/value pairs. Each key is a unique [[string]] and acts as a lookup for its corresponding value within the codex, similar to a dictionary. The key/value pairs are enclosed by square brackets after the "codex" keyword, with each key written as a [[string]] and a colon between a key and its corresponding value. Key/value pairs are separated by commas. If loading data from a JSON file and it contains an object with properties, the object will be stored as a codex (see [[Data Files]]).
====Example:====
codex["id": "ITEM_0001", "count": 5]
The codex variable above will contain a lookup with keys named "id" and "count", with corresponding values of "ITEM_0001" (as a [[string]] value) and 5 (as a [[number]] value). You could create a JSON [[data_files|data file]] containing an [[array]] of these codices as an easy way to maintain a list of [[item|items]] to give to the player when the game starts.
====Reading a Value:====
$my_codex = codex["id": "ITEM_0001", "count": 5];
display_message("The item's count is " + str($my_codex["count"]));
The script above creates a codex variable containing lookups for an item ID and a numeric count value, then displays the count (converted to a [[string]] value) in a message.
====Modifying a Value:====
$my_codex = codex["id": "ITEM_0001", "count": 5];
$my_codex["count"] = 10;
The script above creates a codex variable containing lookups for an item ID and a numeric count value, then modifies the count to 10.
====Inserting a Value:====
$my_codex = codex[];
$my_codex["unique_key"] = "Some Value";
The script above creates an empty codex variable, then inserts a new key/value pair with a key of "unique_key" and a [[string]] value of "Some Value".
====Iterating All Keys:====
$my_codex = codex["name": "Stumpy", "genus": "Sciurus"];
for $key in $my_codex do
display_message("Key: " + $key + ", Value: " + str($my_codex[$key]));
end;
The script above displays each key of the codex along with its corresponding value. The "str" function is used to convert whatever the stored value is to a [[string]] before displaying it.
~~NOTOC~~