Skip to content
Snippets Groups Projects
Unverified Commit a729af20 authored by David M's avatar David M
Browse files

Add image layer id parsing and make image layer name optional

Parity with tile/object layers
parent 27f2e68e
No related branches found
No related tags found
No related merge requests found
......@@ -127,6 +127,9 @@ pub struct ImageLayer {
pub image: Option<Image>,
pub properties: Properties,
pub layer_index: u32,
/// The ID of the layer, as shown in the editor.
/// Layer ID stays the same even if layers are reordered or modified in the editor.
pub id: u32,
}
impl ImageLayer {
......@@ -135,18 +138,20 @@ impl ImageLayer {
attrs: Vec<OwnedAttribute>,
layer_index: u32,
) -> Result<ImageLayer, TiledError> {
let ((o, v, ox, oy), n) = get_attrs!(
let ((o, v, ox, oy, n, id), ()) = get_attrs!(
attrs,
optionals: [
("opacity", opacity, |v:String| v.parse().ok()),
("visible", visible, |v:String| v.parse().ok().map(|x:i32| x == 1)),
("offsetx", offset_x, |v:String| v.parse().ok()),
("offsety", offset_y, |v:String| v.parse().ok()),
],
required: [
("name", name, |v| Some(v)),
("id", id, |v:String| v.parse().ok()),
],
TiledError::MalformedAttributes("layer must have a name".to_string()));
required: [],
// this error should never happen since there are no required attrs
TiledError::MalformedAttributes("image layer parsing error".to_string())
);
let mut properties = HashMap::new();
let mut image: Option<Image> = None;
parse_tag!(parser, "imagelayer", {
......@@ -160,7 +165,7 @@ impl ImageLayer {
},
});
Ok(ImageLayer {
name: n,
name: n.unwrap_or(String::new()),
opacity: o.unwrap_or(1.0),
visible: v.unwrap_or(true),
offset_x: ox.unwrap_or(0.0),
......@@ -168,6 +173,7 @@ impl ImageLayer {
image,
properties,
layer_index,
id: id.unwrap_or(0),
})
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment