Files
parsnip_plucker/src/ldtk/mod.rs

63 lines
1.5 KiB
Rust
Raw Normal View History

2026-02-03 20:11:46 -05:00
use bevy::math::UVec2;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Project {
#[serde(alias = "bgColor")]
pub bg_color: String,
pub levels: Vec<Level>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Level {
pub uid: u32,
pub identifier: String,
#[serde(alias = "pxHei")]
pub px_height: u32,
#[serde(alias = "pxWid")]
pub px_width: u32,
#[serde(alias = "layerInstances")]
pub layer_instances: Vec<LayerInstance>,
#[serde(alias = "fieldInstances")]
pub field_instances: Vec<FieldInstance>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LayerInstance {
#[serde(alias = "__type")]
pub ty: LayerType,
#[serde(alias = "__identifier")]
pub identifier: String,
#[serde(alias = "__cHei")]
pub height: u32,
#[serde(alias = "__cWid")]
pub width: u32,
#[serde(alias = "gridTiles")]
pub grid_tiles: Vec<Tile>,
#[serde(alias = "intGridCsv")]
pub int_grid_tiles: Vec<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FieldInstance {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Tile {
#[serde(alias = "t")]
pub ty: u32,
#[serde(alias = "a")]
pub alpha: f32,
#[serde(alias = "f")]
pub flip: u8,
#[serde(alias = "px")]
pub px_coords: UVec2,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum LayerType {
IntGrid,
Entities,
Tiles,
AutoLayer,
}