Enumerations (Enums) are special value types for Entities. They could be for example the list of possible Enemy types, or a list of Item identifiers.
Examples:
- enum “EnemyType” with values: “Zombie”, “Skeleton”, “Ghost”…
- enum “ItemType” with values: “Ammo”, “HealthPotion”, “Key”…
Enum types
Local enums
Local enums are created and filled directly from the LDtk enum panel.
Imported enums
You can import enums directly from external files and LDtk will keep them synced as you update your files.
From text files
The text files should be formatted like this:
MyEnumA : valueA1, valueA2, valueA3
MyEnumB: valueB1, valueB2
From JSON files
The JSON file should be formatted like below. Note that 3 different formats are accepted for values:
- comma separated values in a String,
- space separated values in a String,
- array of String
{
"MyEnumA": "a1,a2,a3",
"MyEnumB": "b1 b2 b3",
"MyEnumC": ["c1", "c2", "c3"]
}
From Haxe source code
For Haxe users, you can directly import a HX source file to use all (non-parametered) enums declared inside. LDtk will keep the enums synced and they will even be accessible later in your code through the Haxe API, with all the cool type-safe consequences you can imagine.
For example, if you have the following MyTypes.hx
file, you can import it to LDtk enums. Status
and EnemyGrade
will then be available as entity field types.
package whatever;
enum Status {
Visible;
Hidden;
Sleeping;
}
enum EnemyGrade {
Normal;
Elite;
Boss;
}
Note that abstract enums are not supported, as, per definition, abstract enums only exist at compilation time and not at runtime.