Crates.io | tego |
lib.rs | tego |
version | 0.5.0 |
source | src |
created_at | 2021-10-06 18:42:52.353967 |
updated_at | 2021-11-27 17:21:03.182856 |
description | Crate for loading Tiled maps |
homepage | |
repository | https://github.com/texel-sensei/tego |
max_upload_size | |
id | 461306 |
size | 79,020 |
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:
use std::path::Path;
extern crate tego;
fn main() -> tego::Result<()> {
// Load a tmx file.
// Map::from_file() 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::from_file(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