Module ldtk

Source
Expand description

Contains all the types for serializing/deserializing an LDtk file.

This is mostly based on LDtk’s existing rust QuickType loader.

For the most part, changes to the generated module are avoided to make it simpler to maintain this plugin in the future. However, some usability concerns have been addressed. Any changes should be documented here for maintenance purposes:

  1. Comment at the top of the file has been replaced with this documentation.
  2. All enums have Default derived. The first variant is selected as default, exception for LimitBehavior, LimitScope, RenderMode, TileRenderMode, and Type.
  3. Copy, Default, Eq, PartialEq, and Reflect have been derived wherever possible.
  4. i64 and f64 have been changed to i32 and f32.
  5. Component has been derived for EntityInstance.
  6. Documentation added for EntityInstance, which required the unused import of LdtkEntity.
  7. FieldInstance has been moved to its own module, and is re-exported here.
  8. Some “coordinate” fields on LevelBackgroundPosition, EntityInstance, and TileInstance have been changed from vectors to IVec2 and Vec2.
  9. Some “color” fields on LdtkJson, EntityDefinition, IntGridValueDefinition, LayerDefinition, Level, and EntityInstance have been changed from Strings to Color. They also are given a serde attribute for using the “color” or “color::optional” modules.
  10. All urls in docs have been changed to hyperlinks with <>
  11. From<&EntityInstance> implemented for EntityInstance
  12. LayerInstance::layer_instance_type changed from String to Type.

Modules§

all_some_iter
Contains AllSomeIter, for coercing a slice of options to an Iterator of non-options.
ldtk_fields
Contains LdtkFields trait, providing convenience methods for accessing field instances.
loaded_level
Contains LoadedLevel and related types/implementaions.
raw_level_accessor
Contains RawLevelAccessor: convenience methods for accessing raw level data by reference.

Structs§

AutoLayerRuleDefinition
This complex section isn’t meant to be used by game devs at all, as these rules are completely resolved internally by the editor before any saving. You should just ignore this part.
AutoLayerRuleGroup
Definitions
If you’re writing your own LDtk importer, you should probably just ignore most stuff in the defs section, as it contains data that are mostly important to the editor. To keep you away from the defs section and avoid some unnecessary JSON parsing, important data from definitions is often duplicated in fields prefixed with a double underscore (eg. __identifier or __type). The 2 only definition types you might need here are Tilesets and Enums.
EntityDefinition
EntityInstance
Component added to any LDtk Entity by default.
EnumDefinition
EnumTagValue
In a tileset definition, enum based tag infos
EnumValueDefinition
FieldDefinition
This section is mostly only intended for the LDtk editor app itself. You can safely ignore it.
FieldInstance
ForcedRefs
This object is not actually used by LDtk. It ONLY exists to force explicit references to all types, to make sure QuickType finds them and integrate all of them. Otherwise, Quicktype will drop types that are not explicitely used.
GridPoint
This object is just a grid-based coordinate used in Field values.
IntGridValueDefinition
IntGrid value definition
IntGridValueGroupDefinition
IntGrid value group definition
IntGridValueInstance
IntGrid value instance
LayerDefinition
LayerInstance
LdtkCustomCommand
LdtkJson
This file is a JSON schema of files created by LDtk level editor (https://ldtk.io).
LdtkTableOfContentEntry
LdtkTocInstanceData
Level
This section contains all the level data. It can be found in 2 distinct forms, depending on Project current settings: - If “Separate level files” is disabled (default): full level data is embedded inside the main Project JSON file, - If “Separate level files” is enabled: level data is stored in separate standalone .ldtkl files (one per level). In this case, the main Project JSON file will still contain most level data, except heavy sections, like the layerInstances array (which will be null). The externalRelPath string points to the ldtkl file. A ldtkl file is just a JSON file containing exactly what is described below.
LevelBackgroundPosition
Level background image position info
NeighbourLevel
Nearby level info
ReferenceToAnEntityInstance
This object describes the “location” of an Entity instance in the project worlds.
TileCustomMetadata
In a tileset definition, user defined meta-data of a tile.
TileInstance
This structure represents a single tile from a given Tileset.
TilesetDefinition
The Tileset definition is the most important part among project definitions. It contains some extra informations about each integrated tileset. If you only had to parse one definition section, that would be the one.
TilesetRectangle
This object represents a custom sub rectangle in a Tileset image.
World
IMPORTANT: this type is available as a preview. You can rely on it to update your importers, for when it will be officially available. A World contains multiple levels, and it has its own layout settings.

Enums§

AllowedRefs
Possible values: Any, OnlySame, OnlyTags, OnlySpecificEntity
BgPos
Checker
Checker mode Possible values: None, Horizontal, Vertical
EditorDisplayMode
Possible values: Hidden, ValueOnly, NameAndValue, EntityTile, LevelTile, Points, PointStar, PointPath, PointPathLoop, RadiusPx, RadiusGrid, ArrayCountWithLabel, ArrayCountNoLabel, RefLinkBetweenPivots, RefLinkBetweenCenters
EditorDisplayPos
Possible values: Above, Center, Beneath
EditorLinkStyle
Possible values: ZigZag, StraightArrow, CurvedArrow, ArrowsLine, DashedLine
EmbedAtlas
FieldValue
The actual value of a field instance on a Level or EntityInstance.
Flag
IdentifierStyle
Naming convention for Identifiers (first-letter uppercase, full uppercase etc.) Possible values: Capitalize, Uppercase, Lowercase, Free
ImageExportMode
“Image export” option when saving project. Possible values: None, OneImagePerLayer, OneImagePerLevel, LayersAndLevels
LimitBehavior
Possible values: DiscardOldOnes, PreventAdding, MoveLastOne
LimitScope
If TRUE, the maxCount is a “per world” limit, if FALSE, it’s a “per level”. Possible values: PerLayer, PerLevel, PerWorld
RenderMode
Possible values: Rectangle, Ellipse, Tile, Cross
TextLanguageMode
TileMode
Defines how tileIds array is used Possible values: Single, Stamp
TileRenderMode
An enum describing how the the Entity tile is rendered inside the Entity bounds. Possible values: Cover, FitInside, Repeat, Stretch, FullSizeCropped, FullSizeUncropped, NineSlice
Type
Type of the layer as Haxe Enum Possible values: IntGrid, Entities, Tiles, AutoLayer
When
Possible values: Manual, AfterLoad, BeforeSave, AfterSave
WorldLayout