63 lines
1.5 KiB
Rust
63 lines
1.5 KiB
Rust
|
|
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,
|
||
|
|
}
|