Crate ldtk2[][src]

Expand description

A thin crate for people who just want to use ldtk files freely.

Why did I create this nonsense?

  • LDtk-rs uses code generation, it does not get autocomplete support from rust-analyzer. Also, there are special license restrictions on using that crate.
  • ldtk_rust uses .except() inside the crate, you can’t handle errors.

Supported LDtk file versions

>=0.7.2

Usage

cargo add ldtk2
use std::error::Error;
use std::path::Path;
use std::convert::TryInto;

fn main() -> Result<(), Box<dyn Error>> {
  use ldtk2::Ldtk;

  let map = Ldtk::from_path("tests/example.ldtk")?;
  // or
  let map: Ldtk = Path::new("tests/example.ldtk").try_into()?;
  // or
  let map = Ldtk::from_str(include_str!("../tests/example.ldtk"))?;
  // or
  let map: Ldtk = include_str!("../tests/example.ldtk").try_into()?;

  Ok(())
}

Structs

This file is a JSON schema of files created by LDtk level editor (https://ldtk.io).

A structure containing all the definitions of this project

Optional Tile used to display this entity (it could either be the default Entity tile, or some tile provided by a field value, like an Enum).

This section is mostly only intended for the LDtk editor app itself. You can safely ignore it.

IntGrid value definition

IntGrid value instance

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.

Position informations of the background image, if there is one.

Nearby level info

This structure represents a single tile from a given Tileset.

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.

Enums

An enum defining the way the background image (if any) is positioned on the level. See __bgPos for resulting position info. Possible values: Unscaled, Contain, Cover, CoverDirty

Possible values: Hidden, ValueOnly, NameAndValue, EntityTile, PointStar, PointPath, RadiusPx, RadiusGrid

Possible values: Above, Center, Beneath

Possible values: DiscardOldOnes, PreventAdding, MoveLastOne

Possible values: Rectangle, Ellipse, Tile, Cross

Possible values: Stretch, Crop

Type of the layer as Haxe Enum Possible values: IntGrid, Entities, Tiles, AutoLayer

An enum that describes how levels are organized in this project (ie. linearly or in a 2D space). Possible values: Free, GridVania, LinearHorizontal, LinearVertical

Type Definitions