use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Project {
#[serde(rename = "__FORCED_REFS")]
pub forced_refs: Option<ForcedRefs>,
#[serde(rename = "appBuildId")]
pub app_build_id: f64,
#[serde(rename = "backupLimit")]
pub backup_limit: i64,
#[serde(rename = "backupOnSave")]
pub backup_on_save: bool,
#[serde(rename = "bgColor")]
pub bg_color: String,
#[serde(rename = "customCommands")]
pub custom_commands: Vec<LdtkCustomCommand>,
#[serde(rename = "defaultGridSize")]
pub default_grid_size: i64,
#[serde(rename = "defaultLevelBgColor")]
pub default_level_bg_color: String,
#[serde(rename = "defaultLevelHeight")]
pub default_level_height: Option<i64>,
#[serde(rename = "defaultLevelWidth")]
pub default_level_width: Option<i64>,
#[serde(rename = "defaultPivotX")]
pub default_pivot_x: f64,
#[serde(rename = "defaultPivotY")]
pub default_pivot_y: f64,
#[serde(rename = "defs")]
pub defs: Definitions,
#[serde(rename = "exportLevelBg")]
pub export_level_bg: bool,
#[serde(rename = "exportPng")]
pub export_png: Option<bool>,
#[serde(rename = "exportTiled")]
pub export_tiled: bool,
#[serde(rename = "externalLevels")]
pub external_levels: bool,
#[serde(rename = "flags")]
pub flags: Vec<Flag>,
#[serde(rename = "identifierStyle")]
pub identifier_style: IdentifierStyle,
#[serde(rename = "iid")]
pub iid: String,
#[serde(rename = "imageExportMode")]
pub image_export_mode: ImageExportMode,
#[serde(rename = "jsonVersion")]
pub json_version: String,
#[serde(rename = "levelNamePattern")]
pub level_name_pattern: String,
#[serde(rename = "levels")]
pub levels: Vec<Level>,
#[serde(rename = "minifyJson")]
pub minify_json: bool,
#[serde(rename = "nextUid")]
pub next_uid: i64,
#[serde(rename = "pngFilePattern")]
pub png_file_pattern: Option<String>,
#[serde(rename = "simplifiedExport")]
pub simplified_export: bool,
#[serde(rename = "toc")]
pub toc: Vec<LdtkTableOfContentEntry>,
#[serde(rename = "tutorialDesc")]
pub tutorial_desc: Option<String>,
#[serde(rename = "worldGridHeight")]
pub world_grid_height: Option<i64>,
#[serde(rename = "worldGridWidth")]
pub world_grid_width: Option<i64>,
#[serde(rename = "worldLayout")]
pub world_layout: Option<WorldLayout>,
#[serde(rename = "worlds")]
pub worlds: Vec<World>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LdtkCustomCommand {
#[serde(rename = "command")]
pub command: String,
#[serde(rename = "when")]
pub when: When,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Definitions {
#[serde(rename = "entities")]
pub entities: Vec<EntityDefinition>,
#[serde(rename = "enums")]
pub enums: Vec<EnumDefinition>,
#[serde(rename = "externalEnums")]
pub external_enums: Vec<EnumDefinition>,
#[serde(rename = "layers")]
pub layers: Vec<LayerDefinition>,
#[serde(rename = "levelFields")]
pub level_fields: Vec<FieldDefinition>,
#[serde(rename = "tilesets")]
pub tilesets: Vec<TilesetDefinition>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EntityDefinition {
#[serde(rename = "color")]
pub color: String,
#[serde(rename = "exportToToc")]
pub export_to_toc: bool,
#[serde(rename = "fieldDefs")]
pub field_defs: Vec<FieldDefinition>,
#[serde(rename = "fillOpacity")]
pub fill_opacity: f64,
#[serde(rename = "height")]
pub height: i64,
#[serde(rename = "hollow")]
pub hollow: bool,
#[serde(rename = "identifier")]
pub identifier: String,
#[serde(rename = "keepAspectRatio")]
pub keep_aspect_ratio: bool,
#[serde(rename = "limitBehavior")]
pub limit_behavior: LimitBehavior,
#[serde(rename = "limitScope")]
pub limit_scope: LimitScope,
#[serde(rename = "lineOpacity")]
pub line_opacity: f64,
#[serde(rename = "maxCount")]
pub max_count: i64,
#[serde(rename = "nineSliceBorders")]
pub nine_slice_borders: Vec<i64>,
#[serde(rename = "pivotX")]
pub pivot_x: f64,
#[serde(rename = "pivotY")]
pub pivot_y: f64,
#[serde(rename = "renderMode")]
pub render_mode: RenderMode,
#[serde(rename = "resizableX")]
pub resizable_x: bool,
#[serde(rename = "resizableY")]
pub resizable_y: bool,
#[serde(rename = "showName")]
pub show_name: bool,
#[serde(rename = "tags")]
pub tags: Vec<String>,
#[serde(rename = "tileId")]
pub tile_id: Option<i64>,
#[serde(rename = "tileOpacity")]
pub tile_opacity: f64,
#[serde(rename = "tileRect")]
pub tile_rect: Option<TilesetRectangle>,
#[serde(rename = "tileRenderMode")]
pub tile_render_mode: TileRenderMode,
#[serde(rename = "tilesetId")]
pub tileset_id: Option<i64>,
#[serde(rename = "uid")]
pub uid: i64,
#[serde(rename = "width")]
pub width: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FieldDefinition {
#[serde(rename = "__type")]
pub field_definition_type: String,
#[serde(rename = "acceptFileTypes")]
pub accept_file_types: Option<Vec<String>>,
#[serde(rename = "allowedRefs")]
pub allowed_refs: AllowedRefs,
#[serde(rename = "allowedRefTags")]
pub allowed_ref_tags: Vec<String>,
#[serde(rename = "allowOutOfLevelRef")]
pub allow_out_of_level_ref: bool,
#[serde(rename = "arrayMaxLength")]
pub array_max_length: Option<i64>,
#[serde(rename = "arrayMinLength")]
pub array_min_length: Option<i64>,
#[serde(rename = "autoChainRef")]
pub auto_chain_ref: bool,
#[serde(rename = "canBeNull")]
pub can_be_null: bool,
#[serde(rename = "defaultOverride")]
pub default_override: Option<serde_json::Value>,
#[serde(rename = "doc")]
pub doc: Option<String>,
#[serde(rename = "editorAlwaysShow")]
pub editor_always_show: bool,
#[serde(rename = "editorCutLongValues")]
pub editor_cut_long_values: bool,
#[serde(rename = "editorDisplayMode")]
pub editor_display_mode: EditorDisplayMode,
#[serde(rename = "editorDisplayPos")]
pub editor_display_pos: EditorDisplayPos,
#[serde(rename = "editorLinkStyle")]
pub editor_link_style: EditorLinkStyle,
#[serde(rename = "editorShowInWorld")]
pub editor_show_in_world: bool,
#[serde(rename = "editorTextPrefix")]
pub editor_text_prefix: Option<String>,
#[serde(rename = "editorTextSuffix")]
pub editor_text_suffix: Option<String>,
#[serde(rename = "identifier")]
pub identifier: String,
#[serde(rename = "isArray")]
pub is_array: bool,
#[serde(rename = "max")]
pub max: Option<f64>,
#[serde(rename = "min")]
pub min: Option<f64>,
#[serde(rename = "regex")]
pub regex: Option<String>,
#[serde(rename = "symmetricalRef")]
pub symmetrical_ref: bool,
#[serde(rename = "textLanguageMode")]
pub text_language_mode: Option<TextLanguageMode>,
#[serde(rename = "tilesetUid")]
pub tileset_uid: Option<i64>,
#[serde(rename = "type")]
pub purple_type: String,
#[serde(rename = "uid")]
pub uid: i64,
#[serde(rename = "useForSmartColor")]
pub use_for_smart_color: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TilesetRectangle {
#[serde(rename = "h")]
pub h: i64,
#[serde(rename = "tilesetUid")]
pub tileset_uid: i64,
#[serde(rename = "w")]
pub w: i64,
#[serde(rename = "x")]
pub x: i64,
#[serde(rename = "y")]
pub y: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EnumDefinition {
#[serde(rename = "externalFileChecksum")]
pub external_file_checksum: Option<String>,
#[serde(rename = "externalRelPath")]
pub external_rel_path: Option<String>,
#[serde(rename = "iconTilesetUid")]
pub icon_tileset_uid: Option<i64>,
#[serde(rename = "identifier")]
pub identifier: String,
#[serde(rename = "tags")]
pub tags: Vec<String>,
#[serde(rename = "uid")]
pub uid: i64,
#[serde(rename = "values")]
pub values: Vec<EnumValueDefinition>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EnumValueDefinition {
#[serde(rename = "__tileSrcRect")]
pub tile_src_rect: Option<Vec<i64>>,
#[serde(rename = "color")]
pub color: i64,
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "tileId")]
pub tile_id: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LayerDefinition {
#[serde(rename = "__type")]
pub layer_definition_type: String,
#[serde(rename = "autoRuleGroups")]
pub auto_rule_groups: Vec<AutoLayerRuleGroup>,
#[serde(rename = "autoSourceLayerDefUid")]
pub auto_source_layer_def_uid: Option<i64>,
#[serde(rename = "autoTilesetDefUid")]
pub auto_tileset_def_uid: Option<i64>,
#[serde(rename = "canSelectWhenInactive")]
pub can_select_when_inactive: bool,
#[serde(rename = "displayOpacity")]
pub display_opacity: f64,
#[serde(rename = "excludedTags")]
pub excluded_tags: Vec<String>,
#[serde(rename = "gridSize")]
pub grid_size: i64,
#[serde(rename = "guideGridHei")]
pub guide_grid_hei: i64,
#[serde(rename = "guideGridWid")]
pub guide_grid_wid: i64,
#[serde(rename = "hideFieldsWhenInactive")]
pub hide_fields_when_inactive: bool,
#[serde(rename = "hideInList")]
pub hide_in_list: bool,
#[serde(rename = "identifier")]
pub identifier: String,
#[serde(rename = "inactiveOpacity")]
pub inactive_opacity: f64,
#[serde(rename = "intGridValues")]
pub int_grid_values: Vec<IntGridValueDefinition>,
#[serde(rename = "parallaxFactorX")]
pub parallax_factor_x: f64,
#[serde(rename = "parallaxFactorY")]
pub parallax_factor_y: f64,
#[serde(rename = "parallaxScaling")]
pub parallax_scaling: bool,
#[serde(rename = "pxOffsetX")]
pub px_offset_x: i64,
#[serde(rename = "pxOffsetY")]
pub px_offset_y: i64,
#[serde(rename = "requiredTags")]
pub required_tags: Vec<String>,
#[serde(rename = "tilePivotX")]
pub tile_pivot_x: f64,
#[serde(rename = "tilePivotY")]
pub tile_pivot_y: f64,
#[serde(rename = "tilesetDefUid")]
pub tileset_def_uid: Option<i64>,
#[serde(rename = "type")]
pub purple_type: Type,
#[serde(rename = "uid")]
pub uid: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AutoLayerRuleGroup {
#[serde(rename = "active")]
pub active: bool,
#[serde(rename = "collapsed")]
pub collapsed: Option<bool>,
#[serde(rename = "isOptional")]
pub is_optional: bool,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "rules")]
pub rules: Vec<AutoLayerRuleDefinition>,
#[serde(rename = "uid")]
pub uid: i64,
#[serde(rename = "usesWizard")]
pub uses_wizard: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AutoLayerRuleDefinition {
#[serde(rename = "active")]
pub active: bool,
#[serde(rename = "breakOnMatch")]
pub break_on_match: bool,
#[serde(rename = "chance")]
pub chance: f64,
#[serde(rename = "checker")]
pub checker: Checker,
#[serde(rename = "flipX")]
pub flip_x: bool,
#[serde(rename = "flipY")]
pub flip_y: bool,
#[serde(rename = "outOfBoundsValue")]
pub out_of_bounds_value: Option<i64>,
#[serde(rename = "pattern")]
pub pattern: Vec<i64>,
#[serde(rename = "perlinActive")]
pub perlin_active: bool,
#[serde(rename = "perlinOctaves")]
pub perlin_octaves: f64,
#[serde(rename = "perlinScale")]
pub perlin_scale: f64,
#[serde(rename = "perlinSeed")]
pub perlin_seed: f64,
#[serde(rename = "pivotX")]
pub pivot_x: f64,
#[serde(rename = "pivotY")]
pub pivot_y: f64,
#[serde(rename = "size")]
pub size: i64,
#[serde(rename = "tileIds")]
pub tile_ids: Vec<i64>,
#[serde(rename = "tileMode")]
pub tile_mode: TileMode,
#[serde(rename = "uid")]
pub uid: i64,
#[serde(rename = "xModulo")]
pub x_modulo: i64,
#[serde(rename = "xOffset")]
pub x_offset: i64,
#[serde(rename = "yModulo")]
pub y_modulo: i64,
#[serde(rename = "yOffset")]
pub y_offset: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntGridValueDefinition {
#[serde(rename = "color")]
pub color: String,
#[serde(rename = "identifier")]
pub identifier: Option<String>,
#[serde(rename = "value")]
pub value: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TilesetDefinition {
#[serde(rename = "__cHei")]
pub c_hei: i64,
#[serde(rename = "__cWid")]
pub c_wid: i64,
#[serde(rename = "cachedPixelData")]
pub cached_pixel_data: Option<HashMap<String, Option<serde_json::Value>>>,
#[serde(rename = "customData")]
pub custom_data: Vec<TileCustomMetadata>,
#[serde(rename = "embedAtlas")]
pub embed_atlas: Option<EmbedAtlas>,
#[serde(rename = "enumTags")]
pub enum_tags: Vec<EnumTagValue>,
#[serde(rename = "identifier")]
pub identifier: String,
#[serde(rename = "padding")]
pub padding: i64,
#[serde(rename = "pxHei")]
pub px_hei: i64,
#[serde(rename = "pxWid")]
pub px_wid: i64,
#[serde(rename = "relPath")]
pub rel_path: Option<String>,
#[serde(rename = "savedSelections")]
pub saved_selections: Vec<HashMap<String, Option<serde_json::Value>>>,
#[serde(rename = "spacing")]
pub spacing: i64,
#[serde(rename = "tags")]
pub tags: Vec<String>,
#[serde(rename = "tagsSourceEnumUid")]
pub tags_source_enum_uid: Option<i64>,
#[serde(rename = "tileGridSize")]
pub tile_grid_size: i64,
#[serde(rename = "uid")]
pub uid: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TileCustomMetadata {
#[serde(rename = "data")]
pub data: String,
#[serde(rename = "tileId")]
pub tile_id: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EnumTagValue {
#[serde(rename = "enumValueId")]
pub enum_value_id: String,
#[serde(rename = "tileIds")]
pub tile_ids: Vec<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ForcedRefs {
#[serde(rename = "AutoLayerRuleGroup")]
pub auto_layer_rule_group: Option<AutoLayerRuleGroup>,
#[serde(rename = "AutoRuleDef")]
pub auto_rule_def: Option<AutoLayerRuleDefinition>,
#[serde(rename = "CustomCommand")]
pub custom_command: Option<LdtkCustomCommand>,
#[serde(rename = "Definitions")]
pub definitions: Option<Definitions>,
#[serde(rename = "EntityDef")]
pub entity_def: Option<EntityDefinition>,
#[serde(rename = "EntityInstance")]
pub entity_instance: Option<EntityInstance>,
#[serde(rename = "EntityReferenceInfos")]
pub entity_reference_infos: Option<ReferenceToAnEntityInstance>,
#[serde(rename = "EnumDef")]
pub enum_def: Option<EnumDefinition>,
#[serde(rename = "EnumDefValues")]
pub enum_def_values: Option<EnumValueDefinition>,
#[serde(rename = "EnumTagValue")]
pub enum_tag_value: Option<EnumTagValue>,
#[serde(rename = "FieldDef")]
pub field_def: Option<FieldDefinition>,
#[serde(rename = "FieldInstance")]
pub field_instance: Option<FieldInstance>,
#[serde(rename = "GridPoint")]
pub grid_point: Option<GridPoint>,
#[serde(rename = "IntGridValueDef")]
pub int_grid_value_def: Option<IntGridValueDefinition>,
#[serde(rename = "IntGridValueInstance")]
pub int_grid_value_instance: Option<IntGridValueInstance>,
#[serde(rename = "LayerDef")]
pub layer_def: Option<LayerDefinition>,
#[serde(rename = "LayerInstance")]
pub layer_instance: Option<LayerInstance>,
#[serde(rename = "Level")]
pub level: Option<Level>,
#[serde(rename = "LevelBgPosInfos")]
pub level_bg_pos_infos: Option<LevelBackgroundPosition>,
#[serde(rename = "NeighbourLevel")]
pub neighbour_level: Option<NeighbourLevel>,
#[serde(rename = "TableOfContentEntry")]
pub table_of_content_entry: Option<LdtkTableOfContentEntry>,
#[serde(rename = "Tile")]
pub tile: Option<TileInstance>,
#[serde(rename = "TileCustomMetadata")]
pub tile_custom_metadata: Option<TileCustomMetadata>,
#[serde(rename = "TilesetDef")]
pub tileset_def: Option<TilesetDefinition>,
#[serde(rename = "TilesetRect")]
pub tileset_rect: Option<TilesetRectangle>,
#[serde(rename = "World")]
pub world: Option<World>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EntityInstance {
#[serde(rename = "__grid")]
pub grid: Vec<i64>,
#[serde(rename = "__identifier")]
pub identifier: String,
#[serde(rename = "__pivot")]
pub pivot: Vec<f64>,
#[serde(rename = "__smartColor")]
pub smart_color: String,
#[serde(rename = "__tags")]
pub tags: Vec<String>,
#[serde(rename = "__tile")]
pub tile: Option<TilesetRectangle>,
#[serde(rename = "defUid")]
pub def_uid: i64,
#[serde(rename = "fieldInstances")]
pub field_instances: Vec<FieldInstance>,
#[serde(rename = "height")]
pub height: i64,
#[serde(rename = "iid")]
pub iid: String,
#[serde(rename = "px")]
pub px: Vec<i64>,
#[serde(rename = "width")]
pub width: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FieldInstance {
#[serde(rename = "__identifier")]
pub identifier: String,
#[serde(rename = "__tile")]
pub tile: Option<TilesetRectangle>,
#[serde(rename = "__type")]
pub field_instance_type: String,
#[serde(rename = "__value")]
pub value: Option<serde_json::Value>,
#[serde(rename = "defUid")]
pub def_uid: i64,
#[serde(rename = "realEditorValues")]
pub real_editor_values: Vec<Option<serde_json::Value>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceToAnEntityInstance {
#[serde(rename = "entityIid")]
pub entity_iid: String,
#[serde(rename = "layerIid")]
pub layer_iid: String,
#[serde(rename = "levelIid")]
pub level_iid: String,
#[serde(rename = "worldIid")]
pub world_iid: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GridPoint {
#[serde(rename = "cx")]
pub cx: i64,
#[serde(rename = "cy")]
pub cy: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntGridValueInstance {
#[serde(rename = "coordId")]
pub coord_id: i64,
#[serde(rename = "v")]
pub v: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LayerInstance {
#[serde(rename = "__cHei")]
pub c_hei: i64,
#[serde(rename = "__cWid")]
pub c_wid: i64,
#[serde(rename = "__gridSize")]
pub grid_size: i64,
#[serde(rename = "__identifier")]
pub identifier: String,
#[serde(rename = "__opacity")]
pub opacity: f64,
#[serde(rename = "__pxTotalOffsetX")]
pub px_total_offset_x: i64,
#[serde(rename = "__pxTotalOffsetY")]
pub px_total_offset_y: i64,
#[serde(rename = "__tilesetDefUid")]
pub tileset_def_uid: Option<i64>,
#[serde(rename = "__tilesetRelPath")]
pub tileset_rel_path: Option<String>,
#[serde(rename = "__type")]
pub layer_instance_type: String,
#[serde(rename = "autoLayerTiles")]
pub auto_layer_tiles: Vec<TileInstance>,
#[serde(rename = "entityInstances")]
pub entity_instances: Vec<EntityInstance>,
#[serde(rename = "gridTiles")]
pub grid_tiles: Vec<TileInstance>,
#[serde(rename = "iid")]
pub iid: String,
#[serde(rename = "intGrid")]
pub int_grid: Option<Vec<IntGridValueInstance>>,
#[serde(rename = "intGridCsv")]
pub int_grid_csv: Vec<i64>,
#[serde(rename = "layerDefUid")]
pub layer_def_uid: i64,
#[serde(rename = "levelId")]
pub level_id: i64,
#[serde(rename = "optionalRules")]
pub optional_rules: Vec<i64>,
#[serde(rename = "overrideTilesetUid")]
pub override_tileset_uid: Option<i64>,
#[serde(rename = "pxOffsetX")]
pub px_offset_x: i64,
#[serde(rename = "pxOffsetY")]
pub px_offset_y: i64,
#[serde(rename = "seed")]
pub seed: i64,
#[serde(rename = "visible")]
pub visible: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TileInstance {
#[serde(rename = "d")]
pub d: Vec<i64>,
#[serde(rename = "f")]
pub f: i64,
#[serde(rename = "px")]
pub px: Vec<i64>,
#[serde(rename = "src")]
pub src: Vec<i64>,
#[serde(rename = "t")]
pub t: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Level {
#[serde(rename = "__bgColor")]
pub bg_color: String,
#[serde(rename = "__bgPos")]
pub bg_pos: Option<LevelBackgroundPosition>,
#[serde(rename = "__neighbours")]
pub neighbours: Vec<NeighbourLevel>,
#[serde(rename = "__smartColor")]
pub smart_color: String,
#[serde(rename = "bgColor")]
pub level_bg_color: Option<String>,
#[serde(rename = "bgPivotX")]
pub bg_pivot_x: f64,
#[serde(rename = "bgPivotY")]
pub bg_pivot_y: f64,
#[serde(rename = "bgPos")]
pub level_bg_pos: Option<BgPos>,
#[serde(rename = "bgRelPath")]
pub bg_rel_path: Option<String>,
#[serde(rename = "externalRelPath")]
pub external_rel_path: Option<String>,
#[serde(rename = "fieldInstances")]
pub field_instances: Vec<FieldInstance>,
#[serde(rename = "identifier")]
pub identifier: String,
#[serde(rename = "iid")]
pub iid: String,
#[serde(rename = "layerInstances")]
pub layer_instances: Option<Vec<LayerInstance>>,
#[serde(rename = "pxHei")]
pub px_hei: i64,
#[serde(rename = "pxWid")]
pub px_wid: i64,
#[serde(rename = "uid")]
pub uid: i64,
#[serde(rename = "useAutoIdentifier")]
pub use_auto_identifier: bool,
#[serde(rename = "worldDepth")]
pub world_depth: i64,
#[serde(rename = "worldX")]
pub world_x: i64,
#[serde(rename = "worldY")]
pub world_y: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LevelBackgroundPosition {
#[serde(rename = "cropRect")]
pub crop_rect: Vec<f64>,
#[serde(rename = "scale")]
pub scale: Vec<f64>,
#[serde(rename = "topLeftPx")]
pub top_left_px: Vec<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NeighbourLevel {
#[serde(rename = "dir")]
pub dir: String,
#[serde(rename = "levelIid")]
pub level_iid: String,
#[serde(rename = "levelUid")]
pub level_uid: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LdtkTableOfContentEntry {
#[serde(rename = "identifier")]
pub identifier: String,
#[serde(rename = "instances")]
pub instances: Vec<ReferenceToAnEntityInstance>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct World {
#[serde(rename = "defaultLevelHeight")]
pub default_level_height: i64,
#[serde(rename = "defaultLevelWidth")]
pub default_level_width: i64,
#[serde(rename = "identifier")]
pub identifier: String,
#[serde(rename = "iid")]
pub iid: String,
#[serde(rename = "levels")]
pub levels: Vec<Level>,
#[serde(rename = "worldGridHeight")]
pub world_grid_height: i64,
#[serde(rename = "worldGridWidth")]
pub world_grid_width: i64,
#[serde(rename = "worldLayout")]
pub world_layout: Option<WorldLayout>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum When {
#[serde(rename = "AfterLoad")]
AfterLoad,
#[serde(rename = "AfterSave")]
AfterSave,
#[serde(rename = "BeforeSave")]
BeforeSave,
#[serde(rename = "Manual")]
Manual,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AllowedRefs {
#[serde(rename = "Any")]
Any,
#[serde(rename = "OnlySame")]
OnlySame,
#[serde(rename = "OnlyTags")]
OnlyTags,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum EditorDisplayMode {
#[serde(rename = "ArrayCountNoLabel")]
ArrayCountNoLabel,
#[serde(rename = "ArrayCountWithLabel")]
ArrayCountWithLabel,
#[serde(rename = "EntityTile")]
EntityTile,
#[serde(rename = "Hidden")]
Hidden,
#[serde(rename = "NameAndValue")]
NameAndValue,
#[serde(rename = "PointPath")]
PointPath,
#[serde(rename = "PointPathLoop")]
PointPathLoop,
#[serde(rename = "PointStar")]
PointStar,
#[serde(rename = "Points")]
Points,
#[serde(rename = "RadiusGrid")]
RadiusGrid,
#[serde(rename = "RadiusPx")]
RadiusPx,
#[serde(rename = "RefLinkBetweenCenters")]
RefLinkBetweenCenters,
#[serde(rename = "RefLinkBetweenPivots")]
RefLinkBetweenPivots,
#[serde(rename = "ValueOnly")]
ValueOnly,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum EditorDisplayPos {
#[serde(rename = "Above")]
Above,
#[serde(rename = "Beneath")]
Beneath,
#[serde(rename = "Center")]
Center,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum EditorLinkStyle {
#[serde(rename = "ArrowsLine")]
ArrowsLine,
#[serde(rename = "CurvedArrow")]
CurvedArrow,
#[serde(rename = "DashedLine")]
DashedLine,
#[serde(rename = "StraightArrow")]
StraightArrow,
#[serde(rename = "ZigZag")]
ZigZag,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TextLanguageMode {
#[serde(rename = "LangC")]
LangC,
#[serde(rename = "LangHaxe")]
LangHaxe,
#[serde(rename = "LangJS")]
LangJs,
#[serde(rename = "LangJson")]
LangJson,
#[serde(rename = "LangLog")]
LangLog,
#[serde(rename = "LangLua")]
LangLua,
#[serde(rename = "LangMarkdown")]
LangMarkdown,
#[serde(rename = "LangPython")]
LangPython,
#[serde(rename = "LangRuby")]
LangRuby,
#[serde(rename = "LangXml")]
LangXml,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum LimitBehavior {
#[serde(rename = "DiscardOldOnes")]
DiscardOldOnes,
#[serde(rename = "MoveLastOne")]
MoveLastOne,
#[serde(rename = "PreventAdding")]
PreventAdding,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum LimitScope {
#[serde(rename = "PerLayer")]
PerLayer,
#[serde(rename = "PerLevel")]
PerLevel,
#[serde(rename = "PerWorld")]
PerWorld,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum RenderMode {
#[serde(rename = "Cross")]
Cross,
#[serde(rename = "Ellipse")]
Ellipse,
#[serde(rename = "Rectangle")]
Rectangle,
#[serde(rename = "Tile")]
Tile,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TileRenderMode {
#[serde(rename = "Cover")]
Cover,
#[serde(rename = "FitInside")]
FitInside,
#[serde(rename = "FullSizeCropped")]
FullSizeCropped,
#[serde(rename = "FullSizeUncropped")]
FullSizeUncropped,
#[serde(rename = "NineSlice")]
NineSlice,
#[serde(rename = "Repeat")]
Repeat,
#[serde(rename = "Stretch")]
Stretch,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Checker {
#[serde(rename = "Horizontal")]
Horizontal,
#[serde(rename = "None")]
None,
#[serde(rename = "Vertical")]
Vertical,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TileMode {
#[serde(rename = "Single")]
Single,
#[serde(rename = "Stamp")]
Stamp,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "AutoLayer")]
AutoLayer,
#[serde(rename = "Entities")]
Entities,
#[serde(rename = "IntGrid")]
IntGrid,
#[serde(rename = "Tiles")]
Tiles,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum EmbedAtlas {
#[serde(rename = "LdtkIcons")]
LdtkIcons,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Flag {
#[serde(rename = "DiscardPreCsvIntGrid")]
DiscardPreCsvIntGrid,
#[serde(rename = "ExportPreCsvIntGridFormat")]
ExportPreCsvIntGridFormat,
#[serde(rename = "IgnoreBackupSuggest")]
IgnoreBackupSuggest,
#[serde(rename = "MultiWorlds")]
MultiWorlds,
#[serde(rename = "PrependIndexToLevelFileNames")]
PrependIndexToLevelFileNames,
#[serde(rename = "UseMultilinesType")]
UseMultilinesType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum BgPos {
#[serde(rename = "Contain")]
Contain,
#[serde(rename = "Cover")]
Cover,
#[serde(rename = "CoverDirty")]
CoverDirty,
#[serde(rename = "Unscaled")]
Unscaled,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum WorldLayout {
#[serde(rename = "Free")]
Free,
#[serde(rename = "GridVania")]
GridVania,
#[serde(rename = "LinearHorizontal")]
LinearHorizontal,
#[serde(rename = "LinearVertical")]
LinearVertical,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum IdentifierStyle {
#[serde(rename = "Capitalize")]
Capitalize,
#[serde(rename = "Free")]
Free,
#[serde(rename = "Lowercase")]
Lowercase,
#[serde(rename = "Uppercase")]
Uppercase,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ImageExportMode {
#[serde(rename = "LayersAndLevels")]
LayersAndLevels,
#[serde(rename = "None")]
None,
#[serde(rename = "OneImagePerLayer")]
OneImagePerLayer,
#[serde(rename = "OneImagePerLevel")]
OneImagePerLevel,
}