use std::collections::HashMap;
use crate::{Element, Tilemap, Value};
#[derive(Debug, Clone, PartialEq, Default)]
#[allow(missing_docs)]
pub struct Map {
pub package: String, pub filler: Vec<Filler>, pub levels: Vec<Level>, pub foregrounds: Vec<Element>, pub backgrounds: Vec<Element>, pub bg_color: Option<[u8; 4]>, pub extra_data: HashMap<String, Value>,
pub extra_children: Vec<Element>
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
#[allow(missing_docs)]
pub struct Filler { pub position: (i32, i32), pub size: (i32, i32), }
#[derive(Debug, Clone, PartialEq, Default)]
#[allow(missing_docs)]
pub struct Level {
pub name: String, pub data: LevelData,
pub entities: Vec<Entity>, pub triggers: Vec<Entity>, pub bg_decals: Vec<Decal>, pub fg_decals: Vec<Decal>, pub bg: Tilemap<char>, pub bg_tiles: Tilemap<i32>, pub fg_tiles: Tilemap<i32>, pub obj_tiles: Tilemap<i32>, pub solids: Tilemap<char>, pub extra_data: HashMap<String, Value>,
pub extra_children: Vec<Element>
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
#[allow(missing_docs)]
pub struct LevelData {
pub position: (i32, i32), pub size: (i32, i32), pub music_layers: [bool; 4], pub underwater: bool, pub space: bool, pub disable_down_transition: bool, pub music_progress: Option<i32>, pub camera_offset: (i32, i32), pub wind_pattern: String, pub ambience_progress: Option<i32>, pub alt_music: String, pub ambience: String, pub delay_alt_music_fade: bool, pub music: String, pub color: i32, pub dark: bool, pub enforce_dash_number: Option<i32>, pub whisper: bool, }
#[derive(Debug, Clone, PartialEq, Default)]
#[allow(missing_docs)]
pub struct Entity {
pub name: String, pub id: i32, pub position: (f32, f32), pub width: Option<i32>, pub height: Option<i32>, pub origin: (f32, f32), pub nodes: Vec<(f32, f32)>, pub values: HashMap<String, Value>
}
#[derive(Debug, Clone, PartialEq, Default)]
#[allow(missing_docs)]
pub struct Decal {
pub position: (f32, f32), pub scale: (f32, f32), pub texture: String, pub color: [u8; 4], pub depth: i32, pub rotation: f32 }