From 46f8054616cba834d096bc75bfd014f21a2c6874 Mon Sep 17 00:00:00 2001
From: David M <PieKing1215@users.noreply.github.com>
Date: Sun, 12 Dec 2021 21:41:10 -0500
Subject: [PATCH] Add parsing layer id

---
 src/layers.rs  | 5 ++++-
 src/objects.rs | 8 ++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/layers.rs b/src/layers.rs
index b802c56..2b2a6c3 100644
--- a/src/layers.rs
+++ b/src/layers.rs
@@ -54,6 +54,7 @@ pub struct Layer {
     pub tiles: LayerData,
     pub properties: Properties,
     pub layer_index: u32,
+    pub id: u32,
 }
 
 impl Layer {
@@ -64,7 +65,7 @@ impl Layer {
         layer_index: u32,
         infinite: bool,
     ) -> Result<Layer, 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()),
@@ -74,6 +75,7 @@ impl Layer {
             ],
             required: [
                 ("name", name, |v| Some(v)),
+                ("id", id, |v:String| v.parse::<u32>().ok()),
             ],
             TiledError::MalformedAttributes("layer must have a name".to_string())
         );
@@ -103,6 +105,7 @@ impl Layer {
             tiles: tiles,
             properties: properties,
             layer_index,
+            id,
         })
     }
 }
diff --git a/src/objects.rs b/src/objects.rs
index 3e5edf9..36dcd6a 100644
--- a/src/objects.rs
+++ b/src/objects.rs
@@ -20,6 +20,7 @@ pub struct ObjectGroup {
      */
     pub layer_index: Option<u32>,
     pub properties: Properties,
+    pub id: u32,
 }
 
 impl ObjectGroup {
@@ -28,7 +29,7 @@ impl ObjectGroup {
         attrs: Vec<OwnedAttribute>,
         layer_index: Option<u32>,
     ) -> Result<ObjectGroup, TiledError> {
-        let ((o, v, c, n), ()) = get_attrs!(
+        let ((o, v, c, n), id) = get_attrs!(
             attrs,
             optionals: [
                 ("opacity", opacity, |v:String| v.parse().ok()),
@@ -36,7 +37,9 @@ impl ObjectGroup {
                 ("color", colour, |v:String| v.parse().ok()),
                 ("name", name, |v:String| v.into()),
             ],
-            required: [],
+            required: [
+                ("id", id, |v:String| v.parse::<u32>().ok()),
+            ],
             TiledError::MalformedAttributes("object groups must have a name".to_string())
         );
         let mut objects = Vec::new();
@@ -59,6 +62,7 @@ impl ObjectGroup {
             colour: c,
             layer_index,
             properties,
+            id,
         })
     }
 }
-- 
GitLab