1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
use serde::Deserialize;
use std::collections::HashMap;
use crate::{
layer::Layer,
parsers::{parse_color, parse_property},
tile_set::{Orientation, TileSet},
Color, TiledValue,
};
#[derive(Deserialize, Debug, PartialEq, Clone)]
pub struct Map {
#[serde(
rename(deserialize = "backgroundcolor"),
deserialize_with = "parse_color",
default
)]
pub background_color: Color,
#[serde(rename(deserialize = "hexsidelength"))]
pub hex_side_length: Option<u32>,
#[serde(default)]
pub infinite: bool,
pub layers: Vec<Layer>,
pub orientation: Orientation,
#[serde(rename(deserialize = "renderorder"))]
pub render_order: Option<RenderOrder>,
#[serde(rename(deserialize = "staggeraxis"))]
pub stagger_axis: Option<StaggerAxis>,
#[serde(rename(deserialize = "staggerindex"))]
pub stagger_index: Option<StaggerIndex>,
#[serde(rename(deserialize = "tileheight"))]
pub tile_height: u32,
#[serde(rename(deserialize = "tilewidth"))]
pub tile_width: u32,
pub height: u32,
pub width: u32,
#[serde(rename(deserialize = "tilesets"))]
pub tile_sets: Vec<TileSet>,
#[serde(deserialize_with = "parse_property", default)]
pub properties: HashMap<String, TiledValue>,
}
#[derive(Deserialize, Debug, PartialEq, Clone)]
pub enum RenderOrder {
#[serde(rename(deserialize = "right-down"))]
RightDown,
#[serde(rename(deserialize = "right-up"))]
RightUp,
#[serde(rename(deserialize = "left-down"))]
LeftDown,
#[serde(rename(deserialize = "left-up"))]
LeftUp,
}
#[derive(Deserialize, Debug, PartialEq, Clone)]
#[serde(rename_all(deserialize = "lowercase"))]
pub enum StaggerAxis {
X,
Y,
}
#[derive(Deserialize, Debug, PartialEq, Clone)]
#[serde(rename_all(deserialize = "lowercase"))]
pub enum StaggerIndex {
Odd,
Even,
}