tego is a library for parsing and loading Tiled maps.
The main goal of tego is to provide a foundation for loading tmx maps, independent of game engine or storage medium. It should not matter if the map is stored as a file on disk, or loaded on the fly from an asset bundle.
Furthermore common operations should be made easy with sane defaults, but not at the expense of flexibility.
Load a map and pretty print the layers included in it:
```rust use std::path::Path; extern crate tego;
fn main() -> tego::Result<()> { // Load a tmx file. // Map::fromfile() is the easiest, but least flexible method for loading a map. // Images referenced by the map are not loaded, instead only the path is returned as string. let map = tego::Map::fromfile(Path::new("example-maps/default/groups.tmx"))?;
// Keep track how much we need to indent for some nice pretty printing
let mut indent = 0;
for (layer, groups_left) in map.iter_layers() {
// Reduce indentation by the amount of groups left
indent -= groups_left;
// print indentation to highlight hierarchy
print!("{}", " ".repeat(indent));
use tego::Layer::*;
match layer {
Tile(layer) => {
println!("Layer '{}' with {}x{} tiles", layer.name, layer.size.x, layer.size.y);
},
Group(layer) => {
println!("Group layer '{}' with {} sub-layers", layer.name, layer.content.len());
// increase indentation for all layers part of this group
indent += 1;
},
Object(layer) => {
println!("Layer '{}' containing {} objects", layer.name, layer.content.len());
},
}
}
Ok(())
} ```
You can run this example with
cargo run -q --example layer_printer
.
The following TMX features are implemented ✅, partially supported 🚧 or missing ❌ in tego. This is not an exhaustive list.
🚧 Loading of maps with metadata:
🚧 Tile Sets
*.tsx
)🚧 Tile layers
<tile>
loading❌ Infinite maps
🚧 Object layers
❌ Image layers
❌ Properties